LoginSignup
2
1

More than 3 years have passed since last update.

【DataRobot】Visual AIのモデルをデプロイ

Last updated at Posted at 2020-12-11

はじめに

こちら↓の記事で「しゃぶしゃぶ用のお肉の部位を分類」をしたので、ついでにDataRobotで作成した画像類別モデルをデプロイします。
https://qiita.com/zakuzakuzaki/items/c5f577fd6559ac6427ef

デプロイと言っても、モデルをダウンロードできるわけではなく、APIを使ってデータをアップロード、結果をダウンロードする形になります。

なぜか公式通りやってもできなかったので、結構時間かかりました。

実行環境

OS:Ubuntu18.04LTS
Python:3.6.9

検証用データ作成

画像ファイルをアップロードする際は、zipファイルで固めてからアップロードします。
複数枚固めれば、いっきにアップロードできますが、今回は1枚を使用します。
下記検証用画像、001b.pngを圧縮し、001b.zipを作成しました。
b001.PNG
ちなみにこれはロースです。

デプロイ手順

デプロイしたいモデルを選択し、「予測>デプロイ」からモデルをデプロイします。
deploy.PNG

適当に名前をつけてデプロイします。
deproy.PNG

デプロイしたモデルを使用する方法がいくつかあるのですが、画像をアップロードできるのは「バッチ>APIクライアント」だけでした。
他の方法はcsvファイルしか受け付けてくれませんでした。
下記画像の赤色塗りつぶし部分は、いわゆるトークンキーなので隠しました。
deply2.PNG

このプログラムをコピーして、「datarobot-predict.py」という名前で保存します。
プログラム中のusageに書いてある通り、インプットファイルと結果出力用のファイルを指定してpythonファイルを実行します。
するとこんなエラーが出ます。

$ python datarobot-predict.py 001b.zip output.csv
2020-12-11 23:28:51,769 datarobot-predict.py:64 INFO Uploading Zip file to DSS for deployment ID 5fd33e89a93c53e1c4235051
Traceback (most recent call last):
  File "/home/ubuntu/.local/lib/python3.6/site-packages/datarobot/client.py", line 75, in Client
    drconfig = _config_from_env()
  File "/home/ubuntu/.local/lib/python3.6/site-packages/datarobot/client.py", line 286, in _config_from_env
    raise ValueError(e_msg)
ValueError: Incomplete DataRobot configuration specified in environment variables; both DATAROBOT_ENDPOINT and DATAROBOT_API_TOKEN must be specified

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "datarobot-predict.py", line 112, in <module>
    sys.exit(main())
  File "datarobot-predict.py", line 68, in main
    image_dataset = dr.Dataset.create_from_file(file_path=input_file)
  File "/home/ubuntu/.local/lib/python3.6/site-packages/datarobot/models/dataset.py", line 166, in create_from_file
    response = cls._client.build_request_with_file(
  File "/home/ubuntu/.local/lib/python3.6/site-packages/datarobot/client.py", line 212, in __get__
    return self.fget()
  File "/home/ubuntu/.local/lib/python3.6/site-packages/datarobot/client.py", line 207, in get_client
    return _global_client or Client()
  File "/home/ubuntu/.local/lib/python3.6/site-packages/datarobot/client.py", line 81, in Client
    raise ValueError("No valid configuration found")
ValueError: No valid configuration found

プログラムがバグっているのか、API_KEY(APIトークン)とBATCH_PREDICTIONS_URL(エンドポイント)をうまく設定できていないことが原因です。
そこで、DataRobot Python Client ドキュメントのUse a Configuration Fileを参考にして、コンフィグファイルを作成します。

~/.config/datarobot/drconfig.yaml
token: yourtoken(=上記画像の赤色塗りつぶしした部分)
endpoint: https://app.datarobot.com/api/v2

API_KEYがtoken、
BATCH_PREDICTIONS_URLがendpoint
を意味します。

このコンフィグファイルを作成することでうまく設定でき、アップロードできるようになります。
ちなみに1枚類別するのに約1分かかっています。
バッチ処理だから遅いのですかね。


$ python datarobot-predict.py 001b.zip output.csv
2020-12-11 22:55:46,802 datarobot-predict.py:64 INFO Uploading Zip file to DSS for deployment ID 5fd33e89a93c53e1c4235051
2020-12-11 22:56:28,488 datarobot-predict.py:72 INFO Creating Batch Prediction job for deployment ID 5fd33e89a93c53e1c4235051
2020-12-11 22:56:51,334 datarobot-predict.py:105 INFO Finished Batch Prediction job ID 5fd37a8d6e4ff7adb9728fb0 for deployment ID 5fd33e89a93c53e1c4235051. Results downloaded to output.csv.

結果を確認してみましょう。

out.PNG

結果、無事にchuck(ロース)と類別されました。

おわりに

Visual AIのモデルのデプロイを行いました。
途中でトラップがありましたが、無事解決できました。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1