分析手順をAI-APIとして実行する¶
はじめに¶
AI-APIは、分析手順(モデル作成、予測)などの処理内容を記述・デプロイ可能なAPIです。 AI-APIの詳細については AI-API作成ガイド を参照してください。
ここでは分析手順(Notebookファイル)をデプロイし、AI-APIとして実行する例を示します。
作成済みのAAClusterがない場合は、AAClusterを作成する に従って作成してください。 作成したら、Jupyter Notebookへ接続する を参照し、Jupyter Notebookへ接続してください。
AI-APIをデプロイする¶
Jupyter Notebookのルートディレクトリ配下に /opt/aapf/1.5.4/docs/getting_started.zip に含まれる
examples/getting_started-ai-api.ipynb を配置します。
Jupyter Notebookで [New] ボタンを押下し、 [Terminal] を選択してください。
下記のコマンドを実行してください。
$ mkdir -p ~/aiapi $ unzip /opt/aapf/1.5.4/docs/getting_started.zip -d ~/work $ cp -r ~/work/examples/* ~/aiapi/
Terminal上で exit コマンドを実行した後、Terminalタブを閉じてください。
AI-APIの外部仕様を確認する¶
Jupyter Notebook上でAI-APIの外部仕様(APIのエンドポイント、パラメーター、実行コード例)を 確認することができます。
Jupyter Notebook上で [aiapi] ディレクトリに移動し、 getting_started-ai-api.ipynb を開きます。ツールバー右端の歯車ボタンを押します。
外部仕様書が開きます。
AI-APIの外部仕様書作成機能の詳細は、 nbexec User Guide - Execution Document を参照してください。
AI-APIを実行する¶
AI-APIをWebAPIとして実行するPythonコードを作成し、実行します。
AI-APIは <JUPYTER_ENDPOINT>/api/executions に POST リクエストを送信すると実行されます。
リクエストパラメータとして最低限以下を指定する必要があります。
- token
- Jupyter Tokenを設定します。Jupyter Notebookはこのパラメータに設定された値を認証に使用します。
- notebook
- 実行するNotebookファイルのパスを指定します。
また、今回はAI-APIを同期的に実行するため、HTTPヘッダーに X-Response-Encoding: chunked を設定します。
Notebookを作成するため、Jupyter Notebook上で [New] ボタンを押下し、 [Python 3] を選択します。
In [1] 内で下記2点についてコードを書き換えて実行し、レスポンスのステータスコードが正常(202)であることを確認します。
- AI-API実行時の認証用Jupyter Tokenを設定する
- AAPF WebUIにログインし、使用中のAAClusterの [Access Jupyter Notebook] ボタンを押下し、表示される Jupyter Token をコピーします。
- コード中の
JUPYTER_TOKENを書き換えて設定してください。
- エンドポイント(Jupyter NotebookのURL)を設定する
- Jupyter Notebook上で、ブラウザのURL欄に表示されているURLをコピーします。
- コード中の
JUPYTER_ENDPOINTを書き換えて設定してください。
import requests
JUPYTER_TOKEN = 'c1663431be5df1873505524d720f958aa1fecbfd9fc06123' # set the Jupyter Token gotten in the previous clause
JUPYTER_ENDPOINT = 'http://aapf.example.com/proxy/09e1d5cedf23ad9d7d25cb0bdc58e5b9/jupyter' # set the Jupyter Notebook URL
notebook = 'aiapi/getting_started-ai-api.ipynb'
exec_endpoint = '{}/api/executions'.format(JUPYTER_ENDPOINT)
headers = {'Accept': 'application/json', 'X-Response-Encoding': 'chunked'}
params = {
'token': JUPYTER_TOKEN,
'notebook': notebook,
}
res = requests.post(exec_endpoint, params, headers=headers)
res.status_code
AI-APIの実行結果を確認し、実行が正常に完了したことを確認します。
以下ではAI-APIで実行したNotebook 'aiapi/getting_started-ai-api.ipynb' の最後のセルの
出力結果'jupyter-notebook'がレスポンスのoutputsのdataに存在することを確認しています。
import json
text = res.text.split('\r\n')[-3] # get the information of the last cell of the executed AI-API
json.loads(text)
AI-APIとして実行されたNotebookは別途保存されます。
Jupyter Notebook上で [aiapi] ディレクトリに移動し、実行されたNotebook(getting_started-ai-api-Executed1.ipynb)の内容を確認できます。
使用できるリクエスト(GET, POST, DELETE)やレスポンスの詳細については、nbexec User Guide - Execution APIを参照してください。
また、AI-APIにパラメーターを定義し、WebAPI実行時にパラメーターを指定して実行することもできます。パラメーターの定義方法の詳細は、nbexec User Guide - Notebook Parametersを参照してください。