Hugging Face Space에 Potato 배포하기
potato deploy로 Hugging Face Docker Space에서 Potato 주석 작업을 실행하고, 주석을 5분마다 비공개 데이터셋에 백업합니다.
potato deploy up --provider huggingface는 주석 작업을 Hugging Face Docker Space에서 실행합니다. hf.space 주소에서 HTTPS를 쓸 수 있고, 서버에서 설정할 것은 아무것도 없습니다. 작업의 공개 데모나, 데이터와 모델을 이미 Hugging Face Hub에 둔 연구실에 잘 맞습니다. Space의 디스크는 재시작할 때마다 지워지므로, Potato는 Space와 함께 만드는 비공개 Hugging Face 데이터셋에 주석을 보관합니다. 주석을 5분마다 데이터셋에 백업하고 Space가 시작될 때 복원합니다. 이 페이지의 내용을 따르려면 Potato 2.10 이상과, 이미 potato start로 실행해 본 설정이 필요합니다.
Space의 요건과 제한
Potato Space는 Docker Space이며, Docker Space를 만들려면 Hugging Face 유료 플랜이 필요합니다. 개인 계정은 PRO, 조직은 Team이나 Enterprise입니다. 또한 Hugging Face 무료 등급의 계정이나 조직은 Space를 동시에 최대 세 개까지만 실행합니다. 네 번째 Space는 PAUSED 상태로 남으며, 잠자기 상태인 Space와 달리 일시 중지된 Space는 방문자가 열어도 깨어나지 않습니다.
이름이 정해진 주석자와 몇 주 동안 진행하는 연구라면, AWS Lightsail, Jetstream2, Hetzner 같은 가상 머신은 재시작해도 디스크가 남으므로 데이터가 백업에 의존하지 않습니다. Space는 만나려는 사람들이 이미 Hugging Face 계정을 갖고 있을 때나, 잃어도 괜찮은 주석을 모으는 데모 작업일 때 가장 잘 맞습니다.
Hugging Face 토큰 설정하기
Potato는 Hugging Face 토큰으로 Space와 데이터셋을 만듭니다. Hugging Face 설정에서 쓰기 권한이 있는 토큰을 만든 다음, Hugging Face extra를 설치하고 토큰을 환경에 설정하십시오.
pip install 'potato-annotation[huggingface]'
export HF_TOKEN=hf_...
potato deploy providers --verifyproviders --verify는 토큰이 어느 계정의 것인지 출력합니다. Potato는 백업이 데이터셋에 쓸 수 있도록 토큰을 Space 시크릿으로 Space에 전달하며, Space 저장소에 커밋하지는 않습니다.
로그인할 수 있는 사람 정하기
potato deploy는 로그인 설정을 바꾸지 않으며, 공개 Space는 주소를 아는 누구나 열 수 있습니다. 설정이 누구나 가입할 수 있게 되어 있으면, 아래 드라이 런이 경고 D003 "Anyone who finds the URL can register and annotate."(URL을 찾은 사람은 누구나 가입해 주석을 달 수 있습니다)를 출력합니다. 데모에는 보통 공개 가입이 맞습니다. 이름이 정해진 주석자라면 allow_all_users: false와 함께 user_config.users 아래에 명단을 적거나(비밀번호 관리), Hugging Face 계정으로 로그인하게 하십시오. Potato는 Hugging Face를 authentication.providers 아래의 내장 공급자로 지원합니다(SSO 및 OAuth 인증).
계획 확인과 배포
드라이 런은 아무것도 만들지 않고, 배포가 만들 것을 출력합니다.
potato deploy up myproject/config.yaml --provider huggingface --dry-run계획은 비공개 데이터셋 <account>/<name>-annotations을 만든 다음 Docker Space <account>/<name>을 만들고, 세션 키, 관리자 키, 토큰을 Space 시크릿으로 설정한 뒤, 프로젝트를 Dockerfile과 README와 함께 업로드합니다. Dockerfile은 설치된 버전의 공개 Potato 이미지를 바탕으로 빌드하므로, Space에는 프로젝트 파일만 들어갑니다. --owner는 조직 아래에 배포하고, --private은 Space 자체를 비공개로 만들며, --name은 작업에서 가져온 이름을 바꿉니다.
명령을 --dry-run 없이 실행하고 계획을 확인하십시오.
potato deploy up myproject/config.yaml --provider huggingface배포는 Space가 실행될 때까지 기다린 뒤 주소 https://<account>-<name>.hf.space와, 설정 옆에 있는 관리자 키 파일 .potato/secrets.json의 경로를 출력합니다. 관리자 키로 /admin의 관리자 대시보드를 열 수 있습니다. 무료 하드웨어에서 도는 Space는 방문자 없이 48시간이 지나면 잠자기 상태가 되고 누군가 열면 깨어나며, 그때마다 주석은 데이터셋에서 되돌아옵니다.
연구 마무리하기
potato deploy pull은 Space 자체를 읽지 않고, Space가 저장한 모든 것을 담고 있는 백업 데이터셋을 내려받습니다.
potato deploy pull myproject/config.yaml
potato deploy destroy myproject/config.yamldestroy는 Space를 삭제하고 데이터셋은 그대로 둡니다. Space 삭제는 다시 배포하면 되돌릴 수 있지만 주석 삭제는 되돌릴 수 없기 때문입니다. 데이터셋이 더 이상 필요 없으면 Hub에서 데이터셋의 설정 페이지를 열어 삭제하십시오.
백업 없이 배포하기
--demo는 주석이 중요하지 않은 데모를 위해 데이터셋 없이 Space를 배포합니다. 이 경우 드라이 런은 수집한 내용이 다음 재시작 때 사라진다고 경고합니다. 데이터셋이 없으면 pull은 관리자 내보내기를 통해 실행 중인 Space를 읽으므로, Space가 켜져 있는 동안에만 동작합니다.
문제 해결
생성할 때 결제 오류가 나면 계정이나 조직에 유료 플랜이 없다는 뜻입니다. Docker Space에는 개인 계정이면 PRO, 조직이면 Team이나 Enterprise가 필요합니다.
Space가 PAUSED 상태가 되는 것은 무료 등급 계정이 이미 Space 세 개를 실행하고 있을 때입니다. 다른 Space 하나를 일시 중지한 다음, 이 Space를 설정 페이지에서 다시 시작하십시오. 기존 Space를 다시 시작하는 데에는 유료 플랜이 필요 없습니다.
다시 빌드한 뒤 주석이 없어지는 것은 Space가 데이터셋에서 복원하지 못했을 때입니다. 복원에 성공하면 Space 로그에 RESTORED 줄이 나타나며, 이 줄이 없다면 대개 HF_TOKEN Space 시크릿이 없거나 쓰기 권한이 없는 경우입니다.
**BUILD_ERROR**의 원인은 https://huggingface.co/spaces/<account>/<name>?logs=build의 빌드 로그에서 확인할 수 있습니다.
더 읽을거리
- Potato를 로컬 또는 클라우드에서 실행하기: 다른 클라우드 대상과 백업 플래그
- 주석 서버 배포하기: 호스트 고르기
- Hugging Face Spaces 참조 문서