Oracleの新製品AutoML UIを使って、クリックで簡単にモデル生成、デプロイ、RESTで呼び出すところまでやってみました。データセットは、Kaggleのオーストラリアの過去10年分の天候データから、次の日に雨が降るかどうかを予測するモデルを作ってみました。
番外編も用意しておりますので、最後までパラパラっと読み進めて下さいね。
今回も一緒に1ステップ1ステップ進めていける構成にしておりますので、是非楽しんで頂けたら嬉しいです!
※OCIアカウントの作り方、ADBの作り方、OMLユーザの作り方等は【OCI未経験でも】OML NotebooksでPythonを書き始めるの記事に記載しております。
今回の資料で使うデータの出典
Rain in Australia
Predict next-day rain in Australia
By Joe Young
https://www.kaggle.com/jsphyg/weather-dataset-rattle-package/metadata
・weatherAUS.csv(13.44 MB)をデバイスにダウンロード下さい
上記のデータのデータソースhttp://www.bom.gov.au/climate/data
OCIのAutoML UIでモデルを作る
OCIにログインする
ADBの詳細ページで、「ツール」をクリック
機械学習に必要なデータをロードするため、ツールタブの「データベース・アクション」クリック
OMLユーザでサインイン
データツールの「データ・ロード」をクリック
「データのロード」と「ローカル・ファイル」を選択し、「次」をクリック
画面中央の「ファイルの選択」をクリック
weatherAUS.csvがソースにあることを確認し「緑の実行ボタン」をクリック
データロードを実行中…
実行終了を示す緑のチェックマークを確認後、画面右下の「完了」をクリック
ADW詳細画面に戻り、「サービス・コンソール」をクリック
サービスコンソール画面左の「開発」をクリック
サービスコンソール開発タブ内の、「Oracle Machine Learningノートブック」をクリック
OMLユーザでサインイン
クイックアクションの「AutoML」をクリック
AutoML実験ページの左側の「+作成」をクリック
実験の作成ページで「名前」を入力
実験の作成ページで「名前」を入力後、「データ・ソース」をクリック
表の選択で、「OML」スキーマにロードした「WEATHERAUS」を選択、「OK」をクリック
データ・ソース選択後、「予測ターゲット」の選択をする
WEATHERAUSのデータでは、「RAINTOMORROW」を選択
予測タイプは、自動で分類か回帰か決定(クリックして手動で選ぶことも可能です)
画面下の特徴で「チェックボックス」をクリックで各特徴量の有効無効切り替えが可能
画面右上の「開始」をクリック後、「より良い精度」で実行
AutoMLを実行中…
精度進捗やリーダー・ボードが表示され、画面右上で実行進捗状態の確認可能に
実行中…①
実行中…②
実行が完了し、リーダー・ボードには、精度で上位5つのアルゴリズムが表示されている
画面下の特徴で各特徴量の重要度が表示されている
モデルデプロイ
作成されたモデルの内1つを選択して、「デプロイ」をクリック
必要項目を入力し、「OK」をクリック
デプロイ後、画面左上のハンバーガメニュの「モデル」をクリック
モデルページにて、「デプロイメント」をクリック
先ほどデプロイしたモデルが表示されていることを確認
デプロイしたモデルをRESTで呼ぶ
RESTで呼ぶ際に必要な6つの環境変数(1つ1つ見つけていきます):
① export omlserver=「ADBのURL」
② export tenant=「テナントのOCID」
③ export username=「OMLユーザのユーザ名」
④ export password=「OMLユーザのパスワード」
⑤ export database=「ADBのデータベース名」
⑥ export token=「認証トークン」
①環境変数omlserverには、ADBURLを入力 (次のどちらかの方法で見つけて下さい)
ADBURLの見つけ方 その1 – ADBのサービス・コンソールURLをコピー
ADBURLの見つけ方 その2 – ウォレットのtnsnames.oraから見つける
ADBURLが見つかりました
RESTで呼ぶ際に必要な6つの環境変数(1つ1つ見つけていきます):
① export omlserver=https://adb.ap-tokyo-1.oraclecloud.com
② export tenant=「テナントのOCID」←次!
③ export username=「OMLユーザのユーザ名」
④ export password=「OMLユーザのパスワード」
⑤ export database=「ADBのデータベース名」
⑥ export token=「認証トークン」
②環境変数tenant - OCIのトップ画面の右上の人型アイコンから、「テナンシ」をクリック
②環境変数tenant – テナンシ詳細ページのテナンシ情報にあるOCIDをコピー
環境変数tenantが見つかりました
RESTで呼ぶ際に必要な6つの環境変数(1つ1つ見つけていきます):
① export omlserver=https://adb.ap-tokyo-1.oraclecloud.com/
② export tenant=ocid1.tenancy.oc1..aaaaaaaaggaka7fbakfb22209fafnuahf73bhauillwouccx72faufdd
③ export username=「OMLユーザのユーザ名」←次!
④ export password=「OMLユーザのパスワード」
⑤ export database=「ADBのデータベース名」
⑥ export token=「認証トークン」
③環境変数usernameには、OMLユーザのユーザ名を入力
RESTで呼ぶ際に必要な6つの環境変数(1つ1つ見つけていきます):
① export omlserver=https://adb.ap-tokyo-1.oraclecloud.com/
② export tenant=ocid1.tenancy.oc1..aaaaaaaaggaka7fbakfb22209fafnuahf73bhauillwouccx72faufdd
③ export username=OML
④ export password=「OMLユーザのパスワード」←次!
⑤ export database=「ADBのデータベース名」
⑥ export token=「認証トークン」
④環境変数passwordには、OMLユーザのパスワードを入力
RESTで呼ぶ際に必要な6つの環境変数(1つ1つ見つけていきます):
① export omlserver=https://adb.ap-tokyo-1.oraclecloud.com/
② export tenant=ocid1.tenancy.oc1..aaaaaaaaggaka7fbakfb22209fafnuahf73bhauillwouccx72faufdd
③ export username=OML
④ export password=password
⑤ export database=「ADBのデータベース名」←次!
⑥ export token=「認証トークン」
⑤環境変数database - データベース名をコピー
RESTで呼ぶ際に必要な6つの環境変数(1つ1つ見つけていきます):
① export omlserver=https://adb.ap-tokyo-1.oraclecloud.com/
② export tenant=ocid1.tenancy.oc1..aaaaaaaaggaka7fbakfb22209fafnuahf73bhauillwouccx72faufdd
③ export username=OML
④ export password=password
⑤ export database=ATPoml
⑥ export token=「認証トークン」 ←次!
⑥環境変数tokenには、①〜⑤を使って手にいれた認証トークンを
RESTで呼ぶ際に必要な6つの環境変数(1つ1つ見つけていきます):
① export omlserver=https://adb.ap-tokyo-1.oraclecloud.com/
② export tenant=ocid1.tenancy.oc1..aaaaaaaaggaka7fbakfb22209fafnuahf73bhauillwouccx72faufdd
③ export username=OML
④ export password=password
⑤ export database=ATPoml
↓上記の環境変数を使って、手に入れる
⑥ export token=「認証トークン」
⑥環境変数token - ターミナルで①〜⑤の環境変数を追加
export omlserver=https://adb.ap-tokyo-1.oraclecloud.com
export tenant=ocid1.tenancy.oc1...................uca
export username=OML
export password=<password>
export database=ATPoml
⑥環境変数token - 認証トークンをCURLで手に入れる
curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d
'{"grant_type":"password", "username":"'${username}'", "password":"'${password}'"}'
"${omlserver}/omlusers/tenants/${tenant}/databases/${database}/api/oauth2/v1/token"
⑥環境変数tokenに認証トークンを手に入れました(下準備完了)
① export omlserver=https://adb.ap-tokyo-1.oraclecloud.com/
② export tenant=ocid1.tenancy.oc1..aaaaaaaaggaka7fbakfb22209fafnuahf73bhauillwouccx72faufdd
③ export username=OML
④ export password=password
⑤ export database=ATPoml
⑥ export token=’eJhbGciOi......................EFA==‘
ターミナルで、環境変数tokenを追加
export token=‘token’
デプロイしたaus_1の詳細情報をGETしてみる
curl -X GET "${omlserver}/omlmod/v1/deployment/aus_1" \
--header "Authorization: Bearer $token" | jq
デプロイしたaus_1の詳細情報でattributeを見てみる
モデルに予測させてみる
curl -X POST "${omlserver}/omlmod/v1/deployment/aus_1/score" \
--header "Authorization: Bearer ${token}" \
--header 'Content-Type: application/json‘ \ -d
'{"inputRecords":[{"HUMIDITY3PM":"30","LOCATION":"Albury",
"RAINFALL":"1","WINDGUSTSPEED":"30"}]}'| jq
明日雨が降るかどうか確率を出してくれている
値を変えて、モデルに予測させてみる
curl -X POST "${omlserver}/omlmod/v1/deployment/aus_1/score" \
--header "Authorization: Bearer ${token}" \
--header 'Content-Type: application/json‘ \ -d
'{"inputRecords":[{"HUMIDITY3PM":"90","LOCATION":"Albury",
"RAINFALL":"30","WINDGUSTSPEED":"50"}]}'| jq