DatabricksとLabelboxの連携

[Labelbox \| Databricks on AWS](https://docs.databricks.com/integrations/ml/labelbox.html) [2022/1/12時点]の翻訳です。

:::note warn
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
:::

[Labelbox](https://labelbox.com/)は画像、音声、テキスト、タイル画像からトレーニングデータを作成する際に使用されるトレーニングデータプラットフォームです。Labelboxを用いることで、AIチームは単一の統合されたプラットフォームでデータラベリング、データカタログ作成、モデルのデバッグをオペレート、管理、改善するためのワークフローをカスタマイズすることができます。Labelboxは、AIチームによるプロダクションレベルの機械学習システムの構築・運用を支援するように設計されています。

Databricks機械学習ランタイムが稼働しているDatabricks[クラスター](https://qiita.com/taka_yayoi/items/c5d99cd77fe4bfcf69f0)をLabelboxに接続することができます。

# Partner ConnectによるLabelboxへの接続

:::note info
**注意**
すでにLabelboxのアカウントをお持ちの場合、手動での[Labelboxへの接続](#labelboxへの接続)までスキップすることをお勧めします。これは、Partner Connectにおける新規接続のエクスペリエンスが新規Labelboxアカウントに最適化されているためです。
:::

1. お使いのDatabricksアカウント、ワークスペース、サインインしているユーザー全てがPartner Connectの[要件](https://qiita.com/taka_yayoi/items/401f3d785f8262d53ea2#%E8%A6%81%E4%BB%B6)に合致していることを確認します。
1. サイドバーで![](https://docs.databricks.com/_images/partner-connect.png)**Partner Connect**をクリックします。
1. **Labelbox**タイルをクリックします。

    > **注意**
    **Labelbox**タイルにチェックマークアイコンがある場合、お使いのワークスペースの他の誰かがすでにMLクラスターと関連するDatabricksサービスプリンシパルを作成しており、ノートブック`labelbox_databricks_example`がワークスペースの**Workspace/Shared/labelbox_demo**に追加されていることを意味しています。手動での[Labelboxへの接続](#labelboxへの接続)までスキップしてください。

1. **Connect to partner**ダイアログで**Next**をクリックします。Partner Connectがお使いのワークスペースに以下のリソースを作成します。

    - **LABELBOX_CLUSTER**という名前のMLクラスター
(**Next**をクリックする前にデフォルト名を変更することができます)
    - **LABELBOX_USER**という名前のDatabricks[サービスプリンシパル](https://docs.databricks.com/administration-guide/users-groups/service-principals.html)
1. **Email**には、新規Labelboxアカウントに使用したいメールアドレスを入力します。
1. **Connect to Labelbox**をクリックします。
1. 新規Labelboxアカウントでサインアップするための画面上の指示に従います。
1. 新規Labelboxアカウントにサインインしたあとで、存在しない場合、Partner Connectはお使いのワークスペースに以下のリソースを作成します。

    - [サービスプリンシパル](https://docs.databricks.com/dev-tools/api/latest/authentication.html)**LABELBOX_USER**と紐づけられるDatabricksパーソナルアクセストークン
    - **Workspace/Shared/labelbox_demo**フォルダ配下に`labelbox_databricks_example.ipynb`という[ノートブック](https://qiita.com/taka_yayoi/items/24a897cf40bba6d9e305)

1. お使いのLabelboxアカウントに対する[Labelbox APIキーを作成](https://docs.labelbox.com/docs/create-an-api-key)します。最終的にキーは表示されなくなりますので、APIキーをコピーしセキュアな場所に保存します。
1. [MLクラスターとLabelboxスターターノートブックのセットアップ](#mlクラスターとlabelboxスターターノートブックのセットアップ)までスキップします。

# Labelboxへの接続

以下では、LabelboxのDatabricksクラスターへの接続手順を説明します。

:::note info
**注意**
より迅速に接続するには、[Partner Connect](#partner-connectによるlabelboxへの接続)を使ってください。
:::

1. Databricks機械学習ランタイムが稼働しているクラスターが必要となります。既存のクラスターを確認するには、ワークスペースの[クラスター一覧](https://qiita.com/taka_yayoi/items/991aae376c089df58504#%E3%82%AF%E3%83%A9%E3%82%B9%E3%82%BF%E3%83%BC%E3%81%AE%E8%A1%A8%E7%A4%BA)で**Runtime**列の**ML**を参照してください。利用できるMLクラスターがない場合には、[クラスターを作成](https://qiita.com/taka_yayoi/items/d36a469a1e0c0cebaf1b)し**Databricks Runtime Version**では**ML**のリストから選択してください。
1. 新規Labelboxアカウントに**サインアップ**するか、既存Labelboxアカウントに**ログイン**するために[Labelbox](https://app.labelbox.com/signin)ページに移動します。
1. Labelbox APIキーがない場合には、お使いのLabelboxアカウントに対する[Labelbox APIキーを作成](https://docs.labelbox.com/docs/create-an-api-key)します。最終的にキーは表示されなくなりますので、APIキーをコピーしセキュアな場所に保存します。後ほどこのキーが必要となります。
1. ワークスペースのLabelboxスターターノートブックを確認します。
    1. お使いのDatabricksワークスペースでData Science & EngineeringあるいはDatabricks Machine Learning環境にいることを確認します。必要であればサイドバーの[ペルソナスイッチャー](https://qiita.com/taka_yayoi/items/f7efb6c597b425a05fe2#%E3%82%B5%E3%82%A4%E3%83%89%E3%83%90%E3%83%BC%E3%81%AE%E5%88%A9%E7%94%A8)を使用します。
    1. サイドバーで**Workspace > Shared**をクリックします。
    1. **labelbox_demo**というフォルダーがない場合には作成します。
        1. **Shared**の隣の下向き矢印をクリックします。
        1. **Create > Folder**をクリックします。
        1. `labelbox_demo`と入力します。
        1. **Create Folder**をクリックします。
    1. **labelbox_demo**フォルダーをクリックします。**labelbox_databricks_example.ipynb**というノートブックが存在しない場合にはインポートします。
        1. **labelbox_demo**の隣の下向き矢印をクリックします。
        1. **Import**をクリックします。
        1. **URL**をクリックします。
        1. `https://github.com/Labelbox/labelbox-python/blob/develop/examples/integrations/databricks/labelbox_databricks_example.ipynb`と入力し**Import**をクリックします。
1. [MLクラスターとLabelboxスターターノートブックのセットアップ](#mlクラスターとlabelboxスターターノートブックのセットアップ)を実行します。

# MLクラスターとLabelboxスターターノートブックのセットアップ

1. お使いのDatabricksワークスペースでData Science & EngineeringあるいはDatabricks Machine Learning環境にいることを確認します。必要であればサイドバーの[ペルソナスイッチャー](https://qiita.com/taka_yayoi/items/f7efb6c597b425a05fe2#%E3%82%B5%E3%82%A4%E3%83%89%E3%83%90%E3%83%BC%E3%81%AE%E5%88%A9%E7%94%A8)を使用します。
1. お使いのMLクラスターに必要なLabelboxライブラリがインストールされていることを確認します。
    1. サイドバーで**Compute**をクリックします。
    1. お使いのMLクラスターをクリックします。必要に応じて**Filter**ボックスで検索します。
        > **注意**
Labelboxへの接続にPartner Connectを使用した場合、MLクラスターの名前は**LABELBOX_CLUSTER**となります。
    1. **Libraries**タブをクリックします。
    1. **labelbox**ライブラリが一覧にない場合にはインストールします。
        1. **Install New**をクリックします。
        1. **PyPI**をクリックします。
        1. **Package**に**labelbox**と入力します。
        1. **Install**をクリックします。
    1. **labelspark**ライブラリが一覧にない場合にはインストールします。
        1. **Install New**をクリックします。
        1. **PyPI**をクリックします。
        1. **Package**に**labelspark**と入力します。
        1. **Install**をクリックします。
1. MLクラスターをスターターノートブックにアタッチします。
    1. サイドバーで**Workspace > Shared > labelbox_demo > labelbox_databricks_example.ipynb**をクリックします。
    1. ノートブックに[MLクラスターをアタッチ](https://qiita.com/taka_yayoi/items/c306161906d6d34e8bd5#%E3%82%AF%E3%83%A9%E3%82%B9%E3%82%BF%E3%83%BC%E3%81%AB%E3%83%8E%E3%83%BC%E3%83%88%E3%83%96%E3%83%83%E3%82%AF%E3%82%92%E3%82%A2%E3%82%BF%E3%83%83%E3%83%81%E3%81%99%E3%82%8B)します。
1. どのようにLabelboxを自動化するのかを学ぶためにノートブックを確認します。

詳細については、スターターノートブックの[README](https://github.com/Labelbox/labelbox-python/blob/develop/examples/integrations/databricks/readme.md)をご覧くささい。また、[Labelbox Docs](https://docs.labelbox.com/)も参照ください。

### Databricks 無料トライアル

[Databricks 無料トライアル](https://databricks.com/jp/try-databricks)