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を使用すると、お気に入りのツールをすべて1つの場所に集めることができ、ご自身の具体的なニーズに合わせたワークフローを構築できます。

ZenML Hugging Face Space を使用すると、数回のクリックでデプロイ済みの ZenML をすぐに利用できます。数分以内に、デフォルトの ZenML ダッシュボードがデプロイされ、ローカルマシンから接続できる状態になります。

以下のセクションでは、ZenMLのインスタンスをデプロイし、Hubから機械学習パイプラインの表示と管理を行う方法を学習します。Hugging Face Spaces上のZenMLは、Dockerを使用してHub上で完全にホストされる自己完結型アプリケーションです。以下の図は、このプロセス全体を示しています。

ZenML on Hugging Face Spaces -- default deployment

ZenMLのドキュメントを参照して、その機能や、Hugging Face Spacesのデプロイを通じて機械学習パイプラインを実行する方法について詳しく学んでください。まずはZenMLパイプラインのいくつかの小さなサンプル例から始めることも、ZenML Projectsリポジトリにあるより複雑な本番環境向けのプロジェクトから選ぶこともできます。ZenMLは、Hugging Faceを含むお気に入りの多くのツールと、そのまま統合できます。それ以外のツールやワークフローを使用したい場合は、ZenMLは拡張性を備えており、カスタムツールやワークフローに合わせて簡単に動作させることができます。

⚡️ SpacesにZenMLをデプロイする

ZenMLは、わずか数回のクリックでSpacesにデプロイできます:

ZenMLアプリを設定するには、3つの主要なコンポーネントを指定する必要があります。Owner(個人アカウントまたは組織)、Space名、およびVisibility(ページの少し下にあります)。ローカルマシンからZenMLサーバーに接続したい場合は、Spaceのvisibilityを‘Public’に設定する必要があります。

Choose the ZenML Docker template

ここでは、サーバーに使用するより上位のマシンを選択できます。 有料のCPUインスタンスを選択する利点は、自動シャットダウンポリシーの対象とならず、稼働状態を維持し続ける限り常に起動したままになることです。 永続的なCPUを利用するには、接続先としてMySQLデータベースを作成・設定する必要があるでしょう(下記を参照)。

Spaceの外観、例えばタイトル、絵文字、色などをカスタマイズするには、「Files and Versions」に移動し、README.mdファイルのメタデータを編集してください。Spacesの構成パラメータに関する詳細な情報は、Hugging Faceのドキュメントリファレンスガイドで確認できます。

Space を作成すると、画面上に「Building」ステータスとログが表示されます。このステータスが「Running」に切り替わると、Space が使用可能になります。ZenML のログイン UI が表示されない場合は、ページを再読み込みしてください。

スペースの右上隅に、3つの点で構成されたボタンが表示されます。このボタンをクリックすると、「Embed this Space」のメニューオプションが表示されます。(この機能の詳細については、Hugging Face ドキュメントを参照してください。)次に、画面に表示されるボックス内の「Direct URL」をコピーします。このURLは、次のような形式になっているはずです: https://<YOUR_USERNAME>-<SPACE_NAME>.hf.space。このURLを開き、デフォルトのログイン情報(ユーザー名: ‘default’、パスワード: (空欄))を使用してダッシュボードにアクセスしてください。

ローカルマシンからZenML Serverに接続する

ZenMLサーバーが起動して正常に動作するようになったら、ローカルマシンから接続できます。これを行うには、Spaceの「Direct URL」を取得する必要があります(上記を参照)。

スペースのURLは、スペースの公開設定が「Public」に設定されている場合のみ、ローカルマシンからの接続に利用可能になります。

ZenMLをインストールし、プレースホルダーの代わりにカスタムURLを使用した場合、以下のCLIコマンドを使用して、ローカルマシンから‘Direct URL’経由でZenMLサーバーに接続できます。

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

ブラウザでDirect URLを使用すると、ZenMLダッシュボードを全画面アプリケーションとして利用できます(Hugging Face Spacesのラッパーなし)。

The ZenML dashboard will currently not work when viewed from within the Hugging Face webpage (i.e. wrapped in the main https://huggingface.co/... website). This is on account of a limitation in how cookies are handled between ZenML and Hugging Face. You must view the dashboard from the ‘Direct URL’ (see above).

追加の設定オプション

デフォルトでは、ZenMLアプリケーションはSQLiteの非永続データベースを使用するように設定されます。永続データベースを使用する場合は、SpaceのルートディレクトリにあるDockerfileを変更して設定できます。変更可能なさまざまなパラメータの詳細については、DockerでデプロイされたZenMLの設定に関するリファレンスドキュメントを参照してください。

スペースをテストや実験の目的のみで使用する場合、設定を変更する必要はありません。すべてがそのまま動作します。

ドキュメントに記載されているように、Hugging Face Spaces と外部シークレットバックエンドを併用することもできます。Dockerfile の設定で使用する必要があるシークレットを設定するには、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のアップグレード

デフォルトのスペースでは、自動的にZenMLの最新バージョンが使用されます。バージョンを更新する場合は、スペースの「Settings」タブ内で「Factory reboot」オプションを選択するだけです。なお、これによりスペース内のデータがすべて削除されるため、上記で説明したMySQLの永続化データベースを使用していない場合、スペース上のZenMLデプロイメントに含まれるデータが失われます。また、Dockerfileの先頭にあるFROMインポート文を更新することで、スペースで使用するバージョンを以前のバージョンに変更することもできます。

次のステップ

次のステップとして、ZenMLによるMLOps入門ガイドをご覧ください。これは、すぐに始め方を知るための短い実用的なページの一連のものです。あるいは、ZenMLの多くの機能の完全なエンドツーエンドの例であるquickstartの例もご覧ください。

🤗 フィードバックとサポート

Hugging Face Spaces 上の ZenML サーバーで問題が発生している場合は、スペース上部の「Open Logs」ボタンをクリックしてログを表示できます。これにより、サーバーで何が起きているかについての詳細なコンテキストが得られます。

ご提案や、動作しない特定のサポートが必要な場合は、ZenML Slackコミュニティに参加してください。喜んでお手伝いいたします。

Update on GitHub