Hub documentation

Spaces의 ZenML

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Spaces의 ZenML

ZenML은 확장 가능한 오픈소스 MLOps 프레임워크로, 이식 가능하고 프로덕션 환경에 바로 적용할 수 있는 MLOps 파이프라인을 구축하는 데 사용됩니다. 데이터 사이언티스트, ML 엔지니어, MLOps 개발자가 프로덕션 배포까지 협업할 수 있도록 설계되었습니다.

ZenML은 단순하고 유연한 구문을 제공하며, 클라우드 및 도구에 종속되지 않고, ML 워크플로우에 맞게 설계된 인터페이스/추상화를 갖추고 있습니다. ZenML을 사용하면 좋아하는 모든 도구를 한곳에 모을 수 있어, 특정 요구 사항에 맞는 워크플로우를 맞춤 구성할 수 있습니다.

ZenML Hugging Face Space를 사용하면 몇 번의 클릭만으로 배포된 ZenML 버전을 바로 사용할 수 있습니다. 몇 분 안에 기본 ZenML 대시보드가 배포되어 로컬 머신에서 연결할 준비가 완료됩니다.

다음 섹션에서는 ZenML 인스턴스를 직접 배포하고, 이를 통해 Hub에서 머신러닝 파이프라인을 바로 확인하고 관리하는 방법을 배웁니다. Hugging Face Spaces의 ZenML은 Docker를 사용하여 Hub에 완전히 호스팅되는 자체 완결형 애플리케이션입니다. 아래 다이어그램은 전체 과정을 보여줍니다.

ZenML on Hugging Face Spaces -- default deployment

ZenML 문서를 방문하여 ZenML의 기능과 Hugging Face Spaces 배포를 통해 머신러닝 파이프라인을 실행하는 방법에 대해 자세히 알아보세요. 작은 샘플 예제를 확인하여 ZenML 파이프라인을 시작하거나, ZenML Projects 저장소에서 더 복잡한 프로덕션 등급 프로젝트 중 하나를 선택할 수 있습니다. ZenML은 기본적으로 많은 인기 도구를 지원합니다. 물론 Hugging Face도 포함됩니다! 다른 도구를 사용하려는 경우, ZenML은 확장 가능하도록 설계되어 있어 사용자 정의 도구나 워크플로우와 쉽게 연동할 수 있습니다.

⚡️ Spaces에 ZenML 배포

ZenML을 Spaces에 몇 번의 클릭만으로 배포할 수 있습니다:

ZenML 앱을 설정하려면 세 가지 주요 구성 요소를 지정해야 합니다: Owner(개인 계정 또는 조직), Space 이름, 그리고 Visibility(페이지 아래쪽). 로컬 머신에서 ZenML 서버에 연결하려면 space visibility를 ‘Public’으로 설정해야 합니다.

Choose the ZenML Docker template

여기서 서버에 사용할 더 높은 등급의 머신을 선택할 수 있습니다. 유료 CPU 인스턴스를 선택하면 자동 종료 정책에 적용되지 않으므로, 사용자가 종료하지 않는 한 계속 실행 상태를 유지하는 것이 장점입니다. 지속적인 CPU를 활용하려면 연결할 MySQL 데이터베이스를 생성하고 설정해야 합니다(아래 참고).

Space의 제목, 이모지, 색상 등 외관을 개인화하려면 “Files and Versions”로 이동하여 README.md 파일의 메타데이터를 수정하세요. Spaces 설정 매개변수에 대한 전체 정보는 Hugging Face documentation reference guide에서 확인할 수 있습니다.

Space를 생성한 후 화면에 ‘Building’ 상태와 로그가 표시되는 것을 확인할 수 있습니다. 이 상태가 ‘Running’으로 변경되면 Space가 사용 준비가 완료된 것입니다. ZenML 로그인 UI가 표시되지 않으면 페이지를 새로고침해 보세요.

Space의 오른쪽 상단에는 세 개의 점으로 이루어진 버튼이 있으며, 이 버튼을 클릭하면 “Embed this Space” 메뉴 옵션이 표시됩니다. (이 기능에 대한 자세한 내용은 Hugging Face 문서를 참고하세요.) 이제 화면에 표시되는 상자에서 “Direct URL”을 복사하세요. 이 URL은 다음과 같은 형태여야 합니다: https://<YOUR_USERNAME>-<SPACE_NAME>.hf.space. 해당 URL을 열고 기본 로그인 정보(사용자 이름: ‘default’, 비밀번호: (비워 두세요))를 사용하여 대시보드에 액세스하세요.

로컬 머신에서 ZenML Server에 연결

ZenML 서버가 실행되면 로컬 머신에서 해당 서버에 연결할 수 있습니다. 이를 위해 Space의 ‘Direct URL’을 가져와야 합니다(위 참조).

Space의 URL은 Space의 가시성이 ‘Public’으로 설정된 경우에만 로컬 머신에서 연결하는 데 사용 가능합니다.

ZenML 설치 후, Direct URL을 사용하여 다음 CLI 명령으로 로컬 머신에서 ZenML 서버에 연결할 수 있습니다(플레이스홀더 대신 사용자 정의 URL을 사용):

zenml connect --url '<YOUR_HF_SPACES_DIRECT_URL>' --username='default' --password=''

브라우저에서 Direct URL을 사용하여 ZenML 대시보드를 전체 화면 애플리케이션으로 사용할 수도 있습니다(즉, Hugging Face Spaces 래퍼 없이).

ZenML 대시보드는 현재 Hugging Face 웹페이지 내부에서(즉, https://huggingface.co/... 웹사이트에 래핑된 상태로) 열람할 경우 작동하지 않습니다. 이는 ZenML과 Hugging Face 간 쿠키 처리 방식의 제한 사항 때문입니다. 대시보드는 반드시 ‘Direct URL’(위 참조)을 통해 열람해야 합니다.

추가 구성 옵션

기본적으로 ZenML 애플리케이션은 SQLite 비영속성 데이터베이스를 사용하도록 구성됩니다. 영속성 데이터베이스를 사용하려면 Space의 루트 디렉터리에 있는 Dockerfile을 수정하여 구성할 수 있습니다. Docker로 배포된 ZenML을 구성할 때 변경할 수 있는 다양한 매개변수에 대한 자세한 내용은 참고 문서를 참조하세요.

Space를 테스트와 실험 목적으로만 사용하는 경우, 구성에 대한 변경이 필요하지 않습니다. 모든 것이 바로 작동합니다.

문서에 설명된 대로 Hugging Face Spaces와 함께 외부 secrets 백엔드를 사용할 수도 있습니다. Dockerfile 구성에서 사용해야 하는 secrets를 설정하려면 Hugging Face의 내장 ‘Repository secrets’ 기능을 사용해야 합니다. 이 설정을 구성하는 방법에 대한 자세한 내용은 문서를 참조하세요.

ZenML과 함께 클라우드 시크릿 백엔드를 시크릿 관리에 사용하려면, 대시보드의 ZenML Server에서 다음 최소한의 보안 조치를 취해야 합니다:

  • 시작 시 제공되는 default 계정의 비밀번호를 변경하세요. Dashboard 또는 CLI를 통해 수행할 수 있습니다.
  • admin 역할을 할당하고 비밀번호를 설정하여 새로운 사용자 계정을 생성합니다. 이 작업은 Dashboard(새 사용자를 '초대'하는 방식) 또는 CLI를 통해서도 수행할 수 있습니다.
  • 위에서 설명한 대로 새 사용자 계정과 비밀번호를 사용하여 서버에 다시 연결하고, 이 새 사용자 계정을 작업 계정으로 사용하세요.

이는 Hugging Face Spaces 배포 프로세스에서 생성되는 기본 사용자에게 비밀번호가 할당되지 않았고, Space가 공개적으로 접근 가능하기(해당 Space가 public이므로) 때문에, 이 추가 단계를 거치지 않으면 잠재적으로 누구나 시크릿에 접근할 수 있기 때문입니다. 비밀번호를 변경하려면 Dashboard의 오른쪽 상단 버튼을 클릭하여 Settings 페이지로 이동한 후 ‘Update Password’를 클릭하세요.

HF Spaces의 ZenML Server 업그레이드

기본 space는 자동으로 ZenML의 최신 버전을 사용합니다. 버전을 업데이트하려면 space의 ‘Settings’ 탭에서 ‘Factory reboot’ 옵션을 선택하면 됩니다. 이 작업은 space에 포함된 모든 데이터를 삭제하므로, 위에서 설명한 MySQL 영속 데이터베이스를 사용하지 않는 경우 space의 ZenML 배포에 포함된 모든 데이터가 손실됩니다. 또한 Dockerfile 맨 위쪽의 FROM import 문을 수정하여 space가 이전 버전을 사용하도록 구성할 수도 있습니다.

다음 단계

다음 단계로, 빠르게 시작하는 방법에 대한 짧은 실용적인 페이지 시리즈인 ZenML을 활용한 MLOps 입문 가이드를 확인해 보세요. 또는, ZenML의 다양한 기능을 끝에서 끝까지 보여주는 quickstart 예제를 확인해 보세요.

🤗 피드백 및 지원

Hugging Face Spaces의 ZenML 서버에 문제가 발생하면, 스페이스 상단의 “Open Logs” 버튼을 클릭하여 로그를 확인할 수 있습니다. 이를 통해 서버에서 어떤 일이 일어나고 있는지 더 많은 맥락을 파악할 수 있습니다.

기타 제안이 있거나, 작동하지 않는 부분에 대한 특정 지원이 필요하시면 ZenML Slack 커뮤니티에 가입해 주세요. 기꺼이 도와드리겠습니다!

Update on GitHub