Space에서 ZenML 실행

Space에서 ZenML 실행 (ZenML on Spaces)

ZenML은 이식 가능하고 프로덕션에 적합한 MLOps 파이프라인을 만들기 위한 확장 가능한 오픈소스 MLOps 프레임워크예요. 데이터 사이언티스트, ML 엔지니어, MLOps 개발자가 개발부터 프로덕션까지 협업하도록 만들어졌습니다.

출처: 문서

본문

ZenML은 이식 가능하고 프로덕션에 적합한 MLOps 파이프라인을 만들기 위한 확장 가능한 오픈소스 MLOps 프레임워크입니다. 데이터 사이언티스트, ML 엔지니어, MLOps 개발자가 프로덕션까지 함께 개발하도록 만들어졌어요.

ZenML은 간단하고 유연한 문법을 제공하며 클라우드와 도구에 구애받지 않고, ML 워크플로에 맞춘 인터페이스/추상화를 갖추고 있습니다. ZenML을 사용하면 좋아하는 모든 도구를 한곳에 모아 내 특정 요구에 맞는 워크플로를 만들 수 있어요.

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

이어지는 섹션에서는 나만의 ZenML 인스턴스를 배포하고 Hub에서 바로 머신러닝 파이프라인을 보고 관리하는 방법을 배울 거예요. Huggingface Spaces의 ZenML은 Docker를 사용해 Hub에 완전히 호스팅되는 자체 포함 애플리케이션입니다. 아래 다이어그램이 전체 과정을 보여줍니다.

ZenML on HuggingFace Spaces -- default deployment

ZenML 문서를 방문해 기능과 Huggingface Spaces 배포를 통해 머신러닝 파이프라인을 실행하는 방법을 더 알아보세요. 시작하려면 작은 샘플 예시를 확인하거나, ZenML Projects 저장소에서 더 복잡한 프로덕션급 프로젝트를 골라보세요. ZenML은 좋아하는 많은 도구와 기본으로 통합되며, 당연히 Huggingface도 포함됩니다! 다른 것을 사용하고 싶다면 확장 가능하게 설계되어 있으므로 커스텀 도구나 워크플로와 쉽게 연동할 수 있어요.

⚡️ Spaces에서 ZenML 배포하기 (Deploy ZenML on Spaces)

몇 번의 클릭으로 Spaces에서 ZenML을 배포할 수 있어요.

내 ZenML 앱을 설정하려면 세 가지 주요 구성 요소를 지정해야 합니다: Owner(내 개인 계정 또는 조직), Space 이름, 그리고 Visibility(페이지에서 조금 아래에 있음). 로컬 머신에서 ZenML 서버에 연결하려면 Space 가시성을 'Public'으로 설정해야 한다는 점을 유의하세요.

Choose the ZenML Docker template

서버에 사용할 더 높은 티어의 머신을 선택할 수도 있어요. 유료 CPU 인스턴스를 선택하는 장점은 자동 종료 정책의 적용을 받지 않아 내가 그대로 두는 한 계속 실행된다는 점입니다. 영구 CPU를 사용하려면 연결할 MySQL 데이터베이스를 만들고 설정하는 것이 좋을 거예요(아래 참고).

Space의 외형(제목, 이모지, 색상 등)을 개인화하려면 "Files and Versions"로 이동해 README.md 파일의 메타데이터를 수정하세요. Spaces 구성 파라미터에 대한 전체 정보는 HuggingFace 문서 레퍼런스 가이드에서 찾을 수 있어요.

Space를 만든 후 화면에 'Building' 상태와 로그가 표시되는 것을 볼 수 있어요. 이것이 'Running'으로 바뀌면 Space를 사용할 준비가 된 것입니다. ZenML 로그인 UI가 보이지 않으면 페이지를 새로고침해 보세요.

Space 오른쪽 위에 세 개의 점 버튼이 있는데, 클릭하면 "Embed this Space" 메뉴 옵션이 나옵니다. (자세한 내용은 HuggingFace 문서를 참고하세요.) 화면에 나타나는 상자에서 "Direct URL"을 복사하세요. 이렇게 생겼습니다: https://<YOUR_USERNAME>-<SPACE_NAME>.hf.space. 그 URL을 열고 기본 로그인(username: 'default', password: (비워 둠))으로 대시보드에 접근하세요.

로컬 머신에서 ZenML 서버에 연결하기 (Connecting to your ZenML Server from your Local Machine)

ZenML 서버가 실행되면 로컬 머신에서 연결할 수 있어요. 이를 위해 Space의 'Direct URL'을 얻어야 합니다(위 참고).

[!WARNING] Space의 가시성이 'Public'으로 설정된 경우에만 Space URL을 로컬 머신에서 연결하는 데 사용할 수 있습니다.

'Direct URL'을 사용해 다음 CLI 명령으로 로컬 머신에서 ZenML 서버에 연결할 수 있어요(ZenML 설치 후, placeholder 대신 내 커스텀 URL을 사용):

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

또한 Direct URL을 브라우저에서 사용해 ZenML 대시보드를 전체 화면 애플리케이션(즉 HuggingFace Spaces 래퍼 없이)으로 쓸 수도 있어요.

[!WARNING] ZenML 대시보드는 현재 Huggingface 웹페이지 내부(즉 메인 https://huggingface.co/... 웹사이트에 래핑된 상태)에서 보면 동작하지 않습니다. 이는 ZenML과 Huggingface 간의 쿠키 처리 방식 제한 때문입니다. 대시보드는 반드시 'Direct URL'(위 참고)에서 봐야 해요.

추가 구성 옵션 (Extra Configuration Options)

기본적으로 ZenML 애플리케이션은 SQLite 비영구 데이터베이스를 사용하도록 구성됩니다. 영구 데이터베이스를 사용하려면 Space 루트 디렉터리의 Dockerfile을 수정해 구성할 수 있어요. 변경할 수 있는 다양한 파라미터에 대한 자세한 내용은 Docker로 ZenML을 배포할 때 구성하는 방법에 대한 레퍼런스 문서를 참고하세요.

[!TIP] 테스트와 실험 용도로만 Space를 사용한다면 구성을 변경할 필요가 없습니다. 기본 설정 그대로 모든 것이 동작해요.

HuggingFace Spaces와 함께 외부 시크릿 백엔드를 사용할 수도 있는데, 우리 문서에 설명되어 있습니다. Dockerfile 구성에서 사용해야 할 시크릿을 구성할 때는 반드시 HuggingFace의 내장 'Repository secrets' 기능을 사용하세요. 설정 방법에 대한 자세한 내용은 문서를 참고하세요.

[!WARNING] ZenML과 함께 클라우드 시크릿 백엔드를 시크릿 관리에 사용하려면, ZenML 서버에서 다음 최소 보안 예방 조치를 반드시 취해야 합니다:

  • 시작할 때 얻는 default 계정의 비밀번호를 변경하세요. 대시보드 또는 CLI에서 할 수 있어요.
  • 비밀번호가 있는 새 사용자 계정을 만들고 admin 역할을 할당하세요. 이것도 대시보드(새 사용자 '초청') 또는 CLI로 할 수 있습니다.
  • 위에서 설명한 대로 새 사용자 계정과 비밀번호로 서버에 다시 연결하고, 이 새 사용자 계정을 작업 계정으로 사용하세요.

그 이유는 HuggingFace Spaces 배포 과정에서 생성된 기본 사용자에게 비밀번호가 없고, Space가 공개적으로 접근 가능하므로(공개 Space라서) 이 추가 단계 없이는 잠재적으로 누구나 내 시크릿에 접근할 수 있기 때문입니다. 비밀번호를 변경하려면 대시보드 오른쪽 위의 버튼을 클릭해 Settings 페이지로 이동한 뒤 'Update Password'를 클릭하세요.

HF Spaces에서 ZenML 서버 업그레이드하기 (Upgrading your ZenML Server on HF Spaces)

기본 space는 최신 ZenML 버전을 자동으로 사용합니다. 버전을 업데이트하고 싶다면 space의 'Settings' 탭에서 'Factory reboot' 옵션을 선택하면 됩니다. 이렇게 하면 space 안의 모든 데이터가 지워지므로, MySQL 영구 데이터베이스(위에서 설명)를 사용하지 않는다면 space의 ZenML 배포에 포함된 데이터를 잃게 될 거예요. 맨 위의 DockerfileFROM import 문을 업데이트해 space가 이전 버전을 사용하도록 구성할 수도 있어요.

다음 단계 (Next Steps)

다음 단계로 ZenML로 MLOps 시작하기 가이드를 확인해 보세요. 빠르게 시작하는 방법에 대한 짧은 실용 페이지들의 연속입니다. 또는 ZenML의 많은 기능을 보여주는 완전한 엔드투엔드 예시인 우리 quickstart 예시를 확인해 보세요.

🤗 피드백과 지원 (Feedback and support)

HuggingFace Spaces에서 ZenML 서버에 문제가 있다면, space 상단의 "Open Logs" 버튼을 클릭해 로그를 볼 수 있어요. 이렇게 하면 서버에서 무슨 일이 일어나고 있는지에 대한 더 많은 맥락을 얻을 수 있습니다.

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

더 알아보기 (Learn more)

ZenML은 Docker Space로 Hub에서 완전히 호스팅되는 MLOps 프레임워크예요. Space를 만들 때 Owner·이름·Visibility(Public 필수)를 지정하고, 배포 후 Direct URL(https://<user>-<space>.hf.space)로 로컬에서 zenml connect 하여 대시보드에 접근할 수 있어요. 영구 DB와 시크릿은 Dockerfile 설정과 Repository secrets로 구성하며, 클라우드 시크릿 백엔드 사용 시 default 계정 비밀번호 변경 등 보안 조치가 필요합니다.