Hub documentation

Usando sample-factory no Hugging Face

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Usando sample-factory no Hugging Face

sample-factory é uma base de código para aprendizado por reforço assíncrono de alto rendimento. Ele possui integrações com o Hugging Face Hub para compartilhar modelos com resultados de avaliação e métricas de treinamento.

Explorando o sample-factory no Hub

Você pode encontrar modelos do sample-factory filtrando à esquerda na página de modelos.

Todos os modelos no Hub vêm com recursos úteis:

  1. Um cartão de modelo gerado automaticamente com uma descrição, uma configuração de treinamento e mais.
  2. Tags de metadados que auxiliam na descoberta.
  3. Resultados de avaliação para comparação com outros modelos.
  4. Um widget de vídeo onde você pode assistir seu agente em ação.

Instale a biblioteca

Para instalar a biblioteca sample-factory, você precisa instalar o pacote:

pip install sample-factory

O SF é conhecido por funcionar em Linux e MacOS. Não há suporte para Windows no momento.

Carregando modelos do Hub

Usando load_from_hub

Para baixar um modelo do Hugging Face Hub para usar com o Sample-Factory, use o script load_from_hub:

python -m sample_factory.huggingface.load_from_hub -r <HuggingFace_repo_id> -d <train_dir_path>

Os argumentos de linha de comando são:

  • -r: O ID do repositório do repositório HF de onde baixar. O ID do repositório deve estar no formato <username>/<repo_name>
  • -d: Um argumento opcional para especificar o diretório onde o experimento será salvo. O padrão é ./train_dir, que salvará o repositório em ./train_dir/<repo_name>

Baixar Repositório de Modelo Diretamente

Os repositórios do Hugging Face podem ser baixados diretamente usando git clone:

git clone git@hf.co:<Name of HuggingFace Repo> # example: git clone git@hf.co:bigscience/bloom

Usando modelos baixados com Sample-Factory

Após baixar o modelo, você pode executar os modelos do repositório com o script enjoy correspondente ao seu ambiente. Por exemplo, se você estiver baixando um modelo mujoco-ant, ele pode ser executado com:

python -m sf_examples.mujoco.enjoy_mujoco --algo=APPO --env=mujoco_ant --experiment=<repo_name> --train_dir=./train_dir

Observe que você pode precisar especificar o --train_dir se o seu train_dir local tiver um caminho diferente do que está no cfg.json

Compartilhando seus modelos

Usando push_to_hub

Se você deseja fazer o upload sem gerar métricas de avaliação ou um vídeo de replay, pode usar o script push_to_hub:

python -m sample_factory.huggingface.push_to_hub -r <hf_username>/<hf_repo_name> -d <experiment_dir_path>

Os argumentos de linha de comando são:

  • -r: O repo_id para salvar no HF Hub. Este é o mesmo que hf_repository no script enjoy e deve estar no formato <hf_username>/<hf_repo_name>
  • -d: O caminho completo para o diretório do seu experimento para upload

Usando enjoy.py

Você pode enviar seus modelos para o Hub usando o script enjoy do seu ambiente com a flag --push_to_hub. O envio usando enjoy também pode gerar métricas de avaliação e um vídeo de replay.

As métricas de avaliação são geradas executando seu modelo no ambiente especificado por um número de episódios e reportando a média e o desvio padrão da recompensa dessas execuções.

Outros argumentos de linha de comando relevantes são:

  • --hf_repository: O repositório para o qual será feito o push. Deve estar no formato <username>/<repo_name>. O modelo será salvo em https://huggingface.co/<username>/<repo_name>
  • --max_num_episodes: Número de episódios a serem avaliados antes do upload. Usado para gerar métricas de avaliação. É recomendado usar múltiplos episódios para gerar uma média e um desvio padrão precisos.
  • --max_num_frames: Número de quadros a serem avaliados antes do upload. Uma alternativa para max_num_episodes
  • --no_render: Uma flag que desativa a renderização e a exibição das etapas do ambiente. É recomendável definir essa flag para acelerar o processo de avaliação.

Você também pode salvar um vídeo do modelo durante a avaliação para enviar ao hub com a flag --save_video

  • --video_frames: O número de quadros a serem renderizados no vídeo. O valor padrão é -1, o que renderiza um episódio inteiro
  • --video_name: O nome do vídeo a ser salvo. Se None, será salvo como replay.mp4 no diretório do seu experimento

Por exemplo:

python -m sf_examples.mujoco_examples.enjoy_mujoco --algo=APPO --env=mujoco_ant --experiment=<repo_name> --train_dir=./train_dir --max_num_episodes=10 --push_to_hub --hf_username=<username> --hf_repository=<hf_repo_name> --save_video --no_render
Update on GitHub