5.4 Embedded Python ExecutionでのConda環境の使用
このトピックでは、Embedded Python Execution用のSQLおよびREST APIでユーザー定義関数(UDF)を実行することによるconda環境の使用について説明します。
Embedded Python Execution用のSQLおよびREST APIでのUDFの実行
conda環境は、OML4Py Python、SQLおよびREST APIで使用できます。Embedded Python Execution用のSQLおよびREST APIを使用するには、次の情報が必要です。
-
Autonomous DatabaseのOMLサービス・コンソールからのトークンURL。トークンURLを取得し、アクセス・トークンを設定する方法の詳細は、「アクセスおよび認可のプロシージャと関数」(Autonomous Database)を参照してください。
- Oracle Machine Learning for Python (OML4Py)スクリプト・リポジトリのユーザー定義Python関数が含まれるスクリプト。スクリプトを作成してスクリプト・リポジトリに保存する方法の詳細は、Embedded Python Executionおよびスクリプト・リポジトリについてを参照してください。
ノート:
OML4Pyスクリプト実行エンドポイントをコールする際にconda環境を使用するには、SQLを使用する場合はenv_name
フィールドに、RESTを使用する場合はenvName
フィールドに、conda環境を指定します。
Embedded Python Execution用のSQL APIを使用したPython UDFの実行 - 非同期モード
pyqEval
ファンクションをコールするSELECT
文を実行します。PAR_LST
引数では、呼び出されたスクリプトでレンダリングされたイメージをWebサーバーが取得できるように、特別な制御引数oml_graphics_flag
をtrue
に指定し、oml_async_flag
をtrueに設定してジョブを非同期に送信します。OUT_FMT
引数で、文字列'PNG'は、表が固定列(イメージ・バイト列を含む)が含まれる表でレスポンスを返すことを指定します。SCR_NAME
パラメータは、スクリプト・リポジトリに格納されている関数sb_plot
を指定します。ENV_NAME
は、スクリプトがコールされる環境名mysbenv
を指定します。
%script
set long 2000
SELECT * FROM table(pyqEval(
par_lst => '{"oml_graphics_flag":true, "oml_async_flag":true}',
out_fmt => 'PNG',
scr_name => 'sb_plot',
scr_owner=> NULL,
env_name => 'mysbenv'));
出力は、次のようなものです。
NAME VALUE
---------------------------
https://gcc59e2cf7a6f5f-oml4.adb-compdev1.us-phoenix-1.oraclecloudapps.com/oml/api/py-scripts/v1/jobs/b82947a7-ec3a-4ca6-bf86-54b3f2b3a4b0
ジョブ・ステータスの取得
pyqJobStatusファンクションを使用してジョブ・ステータスをポーリングします。ジョブがまだ実行中の場合、戻り値はジョブがまだ実行中であることを示します。ジョブが完了すると、ジョブIDと結果の場所が返されます。
%script
set long 1000
SELECT VALUE from pyqJobStatus(job_id => 'b82947a7-ec3a-4ca6-bf86-54b3f2b3a4b0');
出力からジョブIDが返されます:
NAME VALUE
---------------------------
https://gcc59e2cf7a6f5f-oml4.adb-compdev1.us-phoenix-1.oraclecloudapps.com/oml/api/py-scripts/v1/jobs/b82947a7-ec3a-4ca6-bf86-54b3f2b3a4b0/result
結果の取得
%script
set long 500
SELECT NAME, ID, VALUE, dbms_lob.substr(image,100,1) image FROM pyqJobResult(job_id => 'b82947a7-ec3a-4ca6-bf86-54b3f2b3a4b0', out_fmt=>'PNG');
出力は、次のようなものです。
NAME ID VALUE IMAGE
---------------------------
1 [{"0":0.0,"1":0.0,"2":0.2333333333,"accuracy":0.2333333333,"macro avg":0.0777777778,"weighted avg":0.0544444444},{"0":0.0,"1":0.0,"2":1.0,"accuracy":0.2333333333,"macro avg":0.3333333333,"weighted avg":0.2333333333},{"0":0.0,"1":0.0,"2":0.3783783784,"accuracy":0.2333333333,"macro avg":0.1261261261,"weighted avg":0.0882882883},{"0":11.0,"1":12.0,"2":7.0,"accuracy":0.2333333333,"macro avg":30.0,"weighted avg":30.0}] 89504E470D0A1A0A0000000D494844520000046A000003E808060000008668185B0000003974455874536F667477617265004D6174706C6F746C69622076657273696F6E332E362E322C2068747470733A2F2F6D6174706C6F746C69622E6F72672F28E8
Embedded Python Execution用のREST APIを使用したPython UDFの実行
次の例では、Embedded Python Execution用にOML4Py REST APIでsb_plot
という名前のスクリプトを実行します。環境名パラメータenvName
をmysbenv
に設定します。PNGイメージおよび関数からのデータをJSON形式で戻すには、graphicsFlag
パラメータをtrue
に設定します。
$ curl -i -X POST --header "Authorization: Bearer ${token}" \
--header 'Content-Type: application/json' --header 'Accept: application/json' \
-d '{"envName":"mysbenv", "graphicsFlag":true, "service":"LOW"}' \
"${omlserver}/oml/api/py-scripts/v1/do-eval/sb_plot"
出力は、次のようなものです。
NAME ID VALUE IMAGE
---------------------------
1 [{"0":0.0,"1":0.0,"2":0.2333333333,"accuracy":0.2333333333,"macro avg":0.0777777778,"weighted avg":0.0544444444},{"0":0.0,"1":0.0,"2":1.0,"accuracy":0.2333333333,"macro avg":0.3333333333,"weighted avg":0.2333333333},{"0":0.0,"1":0.0,"2":0.3783783784,"accuracy":0.2333333333,"macro avg":0.1261261261,"weighted avg":0.0882882883},{"0":11.0,"1":12.0,"2":7.0,"accuracy":0.2333333333,"macro avg":30.0,"weighted avg":30.0}] 89504E470D0A1A0A0000000D494844520000046A000003E808060000008668185B0000003974455874536F667477617265004D6174706C6F746C69622076657273696F6E332E362E322C2068747470733A2F2F6D6174706C6F746C69622E6F72672F28E8
親トピック: サード・パーティ・パッケージのインストール