Hugging Face에서 sample-factory 사용하기
Hugging Face에서 sample-factory 사용하기
sample-factory는 높은 처리량의 비동기 강화학습을 위한 코드베이스예요. Hugging Face Hub와 통합되어 평가 결과와 학습 메트릭과 함께 모델을 공유할 수 있어요.
Hub에서 강화학습 모델을 내려받고 enjoy 스크립트로 바로 실행할 수 있어요.
출처: 문서
본문
Hub에서 sample-factory 둘러보기
모델 페이지 왼쪽 필터로 sample-factory 모델을 찾을 수 있어요.
Hub의 모든 모델은 유용한 기능을 갖추고 있어요:
- 설명, 학습 구성 등을 담은 자동 생성 모델 카드.
- 발견 가능성을 높이는 메타데이터 태그.
- 다른 모델과 비교할 수 있는 평가 결과.
- 에이전트가 수행하는 모습을 볼 수 있는 비디오 위젯.
라이브러리 설치
sample-factory 라이브러리를 설치하려면 패키지를 설치해야 해요:
pip install sample-factory
SF는 Linux와 MacOS에서 동작하는 것으로 알려져 있어요. 현재 Windows 지원은 없어요.
Hub에서 모델 로드하기
load_from_hub 사용하기
Hugging Face Hub에서 Sample-Factory에 사용할 모델을 다운로드하려면 load_from_hub 스크립트를 사용해요:
python -m sample_factory.huggingface.load_from_hub -r <HuggingFace_repo_id> -d <train_dir_path>
명령줄 인자:
-r: 다운로드할 HF 리포지토리의 repo ID.<username>/<repo_name>형식이어야 해요.-d: 실험을 저장할 디렉터리를 지정하는 선택적 인자. 기본값은./train_dir이며 리포지토리를./train_dir/<repo_name>에 저장해요.
모델 리포지토리 직접 다운로드
Hugging Face 리포지토리는 git clone으로 직접 다운로드할 수 있어요:
git clone [email protected]:<Name of HuggingFace Repo> # example: git clone [email protected]:bigscience/bloom
다운로드한 모델을 Sample-Factory로 사용하기
모델을 다운로드한 후에는 환경에 해당하는 enjoy 스크립트로 리포지토리의 모델을 실행할 수 있어요. 예를 들어 mujoco-ant 모델을 다운로드했다면 다음과 같이 실행할 수 있어요:
python -m sf_examples.mujoco.enjoy_mujoco --algo=APPO --env=mujoco_ant --experiment=<repo_name> --train_dir=./train_dir
로컬 train_dir이 cfg.json에 있는 것과 다른 경로라면 --train_dir을 지정해야 할 수 있어요.
모델 공유하기
push_to_hub 사용하기
평가 메트릭이나 리플레이 비디오를 생성하지 않고 업로드하려면 push_to_hub 스크립트를 사용할 수 있어요:
python -m sample_factory.huggingface.push_to_hub -r <hf_username>/<hf_repo_name> -d <experiment_dir_path>
명령줄 인자:
-r: HF Hub에 저장할 repo_id. enjoy 스크립트의***와 같으며<hf_username>/<hf_repo_name>형식이어야 해요.-d: 업로드할 실험 디렉터리의 전체 경로.
enjoy.py 사용하기
자신의 환경의 enjoy 스크립트에 --push_to_hub 플래그를 붙여 모델을 Hub에 업로드할 수 있어요. enjoy로 업로드하면 평가 메트릭과 리플레이 비디오도 생성할 수 있어요.
평가 메트릭은 지정된 환경에서 모델을 여러 에피소드 실행하고 그 실행들의 평균·표준편차 보상을 보고함으로써 생성돼요.
기타 관련 명령줄 인자:
--hf_repository: 푸시할 리포지토리.<username>/<repo_name>형식이어야 해요. 모델은https://huggingface.co/<username>/<repo_name>에 저장돼요.--max_num_episodes: 업로드 전에 평가할 에피소드 수. 평가 메트릭 생성에 사용돼요. 정확한 평균·표준편차를 얻으려면 여러 에피소드를 사용하는 게 좋아요.--max_num_frames: 업로드 전에 평가할 프레임 수.max_num_episodes의 대안이에요.--no_render: 렌더링과 환경 단계 표시를 비활성화하는 플래그. 평가 과정을 빠르게 하려면 이 플래그를 설정하는 게 좋아요.
--save_video 플래그로 평가 중 모델 비디오를 저장해 Hub에 업로드할 수도 있어요.
--video_frames: 비디오에 렌더링할 프레임 수. 기본값은 -1로 전체 에피소드를 렌더링해요.--video_name: 저장할 비디오 이름.None이면 실험 디렉터리에replay.mp4로 저장돼요.
예:
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
더 알아보기 (Learn more)
load_from_hub로 Hub의 강화학습 모델을 다운로드하고enjoy스크립트로 실행해요.--push_to_hub로 평가 메트릭·리플레이 비디오와 함께 모델을 업로드해요.- sample-factory GitHub에서 라이브러리 전체를 확인해 보세요.