4.13 インタプリタとノートブック・サービス・レベルについて

インタープリタは、バックエンドで特定のデータ処理言語を使用できるようにするプラグインです。

Oracle Machine Learning UIのZeppelinノートブックでは、Oracle Databaseインタープリタ・グループ内のSQL、PL/SQL、PythonおよびRインタープリタと、プレーン・テキストをHTMLに変換できるようにプレーン・テキスト書式設定構文用のMarkdownインタープリタを使用します。Condaインタープリタを使用してConda環境に接続し、Pythonのサードパーティのライブラリ・パッケージを操作します。

インタプリタを使用するには、ノートブック内のパラグラフの先頭でこれらのディレクティブを使用する必要があります
  • SQL — %sql
  • PL/SQL — %script
  • Python — %python
  • R - %r
  • Markdown — %md
  • Conda — %conda
ノートブックには、インタプリタ・グループ内のインタプリタの順序を定義する、サービス・レベルの内部リストが含まれています。Oracle Databaseインタープリタ・グループ内のインタープリタ・バインディングのデフォルトの順序は、次のとおりです:
  • — データベース内操作(通常はシリアル(非パラレル)実行)のための、最小レベルのリソースを提供します。複数のユーザーによるデータベース内同時操作の最大数がサポートされています。優先度の低いインタープリタが、インタープリタ・リストの最も上に表示され、デフォルトになります。
  • — 可能な場合は、データベース内操作をパラレルで実行するための、固定数のCPUを提供します。制限された数の同時ユーザーがサポートされています。通常、プラガブル・データベースに割り当てられたCPU数の1.25倍です。
  • — データベース内操作をパラレルで実行するための、最高レベルの数のCPUを提供します(最高でも、プラガブル・データベースに割り当てられているCPUの数まで)。パフォーマンスは最高ですが、サポートされているのはデータベース内同時操作の最小数(通常は3)です。
  • GPU — データベース・サービス・レベルが「高」に設定されているPythonインタプリタを介して、ノートブックにGPUコンピュート機能を提供します。メモリー設定は、デフォルトで8 GB (DDR4)です。200 GBまで拡張可能です。
インタープリタ・バインディングに関して、次のタスクを実行できます:
  • インタープリタのバインドとバインド解除: 特定のインタープリタをノートブックにバインドしない場合、エラー・メッセージが表示されます:
    Not supported interpreter <name of interpreter>
  • インタープリタ・バインディングの設定と順序変更。ノートブックの特定のパラグラフに特定のインタープリタを使用する場合は、インタープリタ・バインディングを設定して順序を変更できます。その場合は、そのパラグラフに特定のインタープリタを選択する必要があります。
  • ノートブックの特定のパラグラフのインタープリタ・バインディングの変更
次の各シナリオでは、インタープリタ・バインディングの順序に注意する必要があります:
  • ノートブックの作成 — ノートブックを作成するとき、そのノートブックは最初のインタープリタ・バインディング順序(低(デフォルト)、中、高)を継承します。
  • ノートブックのインポート — ノートブックをインポートするとき、そのノートブックは定義済のインタープリタ・バインディングを継承します。ただし、ノートブックをインポートした後、インタープリタ・バインディングの順序と必要なインタープリタが選択されていることを確認します。
  • ノートブックのエクスポート — ノートブックをエクスポートするとき、そのノートブックは定義済のインタープリタ・バインディングを継承します。
  • テンプレートからのノートブックの作成 — テンプレートからノートブックを作成するとき、そのノートブックはデフォルトのインタープリタ・バインディングの順序を継承します。

4.13.1 ノートブック・サービス・レベルの変更

ノートブック・タイプは、ADBサービス・レベル(低、中、高およびGPU)に対応しています。これらのサービス・レベルは、データベースでの並列性に影響します。ノートブックに対して設定されているノートブック・タイプは、そのノートブック内のすべてのパラグラフに適用されます。

ノート:

ノートブック・クラシックでは、ノートブック・タイプはインタプリタ・バインディングと呼ばれています。ノートブック・タイプGPUはノートブック・クラシックでは使用できません。
インタプリタを使用するには、ノートブック内のパラグラフの先頭でこれらのディレクティブを使用する必要があります
  • SQL — %sql
  • PL/SQL — %script
  • Python — %python
  • R — %r
  • Markdown — %md
  • Conda — %conda
ノートブック・サービス・レベルは、新しいノートブックとノートブック・クラシックの両方で変更できます。

新しいノートブックでのノートブック・サービス・レベルの変更

  1. ノートブック・エディタでノートブックを開きます。
  2. 右上隅にある「ノートブック・タイプの更新」アイコンをクリックします。使用可能なノートブック・タイプが表示されます。現在のノートブック・タイプはチェック・マークで示されており、「ノートブック・タイプの更新」アイコンの横にも表示されます。

    図4-58 ノートブック内に表示されているADBサービス・レベル


    ノートブック内に表示されているADBサービス・レベル

    ノートブック・タイプ(ADBサービス・レベル)を次に示します:
    • — データベース内操作(通常はシリアル(非パラレル)実行)のための、最小レベルのリソースを提供します。複数のユーザーによるデータベース内同時操作の最大数がサポートされています。優先度の低いインタープリタが、インタープリタ・リストの最も上に表示され、デフォルトになります。
    • — 可能な場合は、データベース内操作をパラレルで実行するための、固定数のCPUを提供します。制限された数の同時ユーザーがサポートされています。通常、プラガブル・データベースに割り当てられたCPU数の1.25倍です。
    • — データベース内操作をパラレルで実行するための、最高レベルの数のCPUを提供します(最高でも、プラガブル・データベースに割り当てられているCPUの数まで)。パフォーマンスは最高ですが、サポートされているのはデータベース内同時操作の最小数(通常は3)です。
    • GPU — データベース・サービス・レベルが「高」に設定されているPythonインタプリタを介して、ノートブックにGPUコンピュート機能を提供します。ノートブックのメモリー設定は、デフォルトでは32 GB (DDR4)です。200 GBまで拡張可能です。
  3. ノートブック・タイプを変更するには、選択するタイプをクリックします。この例では、「高」をクリックします。ノートブック・タイプが"高"に更新されていますという確認メッセージが表示されます。

    ノート:

    更新後のノートブック・タイプは、そのノートブック内のすべてのパラグラフに適用されます。ノート・タイプはパラグラフ・レベルでは変更できません。

    図4-59 ADBサービス・レベル - 高


    ADBサービス・レベル - 高

ノートブック・クラシックでのインタプリタ・バインディング(ノートブック・タイプ)の変更

  1. 歯車アイコンをクリックしてインタプリタ・バインディング(ADBサービス・レベル)とその順序を表示します。
    ノートブックのエディタ・オプション

    ノート:

    ノートブック・タイプGPUはノートブック・クラシックでは使用できません。
    インタプリタ・バインディングは、次のスクリーンショットに示すように表示されます:

    図4-60 ノートブック・クラシック全体に指定されているインタプリタ・バインディング

    ノートブック・クラシック全体に指定されているインタプリタ・バインディング
    この例では、3つのSQLインタプリタすべてがノートブックにバインドされていますが、リソース割当てがADBサービス・レベルlowであるOMLLABS104047_low %sqlがリストの先頭のインタプリタであるため、これがデフォルトです。Markdownインタープリタは、ノートブックにバインドされていません

    ノート:

    インタプリタの名前は、databasename_low、databasename_mediumおよびdatabasename_highという形式であり、インタプリタ・バインディングの名前と同じです。
    この例では、インタープリタ名は次のとおりです。
    • OMLLABS104047_low % sql(default),%script, %python, %r, %conda
    • OMLLABS104047_medium % sql(default),%script, %python, %r, %conda
    • OMLLABS104047_high % sql(default), %script,%python, %r, %conda
    • md %md(default)
    リストの最初のPythonインタープリタは、ノートブック内のすべてのPythonパラグラフを実行するために使用されます。たとえば、lowバインディングが選択されている場合、すべてのPythonパラグラフはlowバインディングのPythonインタープリタを使用して実行されます。SQLおよびスクリプト・インタプリタ・バインディングを含む他のすべてのパラグラフは、lowのデータベース名のサービス(つまり、OMLLABS104047_low)を使用して実行されます。いずれかのPythonスクリプトでそのデータベースに対して問合せが実行される場合、これらの問合せは、lowのデータベース名のサービス(この例ではOMLLABS104047_low)を使用して実行されます。
  2. インタプリタ・バインディングを変更するには、インタプリタ・バインディングをドラッグし、リストの先頭にドロップします。この例では、インタプリタOMLLABS104047_highをリストの先頭にドラッグ・アンド・ドロップします。

    図4-61 ノートブック・クラシック内でインタプリタ・バインディングが高に設定された


    ノートブック・クラシック内でインタプリタ・バインディングがhighに設定された

  3. 「保存」をクリックします。更新後のインタプリタ・バインディングは、そのノートブック内のすべてのパラグラフに適用されます。インタプリタ・バインディングはパラグラフ・レベルでは変更できません。

4.13.2 ノートブック・サービス・レベルの確認

ノートブック・サービス・レベルを変更した後は、SQL文を使用してその情報を表示および確認できます。ノートブック・タイプは、ノートブック・クラシックにおいてはインタプリタ・バインディングと呼ばれており、ADBサービス・レベル(低、中、高およびGPU)に対応しています。これらのサービス・レベルは、データベースでの並列性に影響します。

Pythonノートブックの場合、インタープリタ・バインディングはすべてのPythonパラグラフに使用されます。

ノート:

Pythonノートブックでは、パラグラフ・レベルでインタープリタ・バインディングを上書きしないでください。

ノートブックでのノートブック・サービス・レベルの確認

  1. 更新後のノートブック・タイプを確認する必要があるノートブックを開きます。
  2. 次のSQL文を実行します。
    %sql
    SELECT SYS_CONTEXT ('USERENV', 'SERVICE_NAME') FROM DUAL;
  3. 「実行」をクリックします。このSQL文では、次のスクリーンショットで示すように、更新後のノートブック・タイプについて次の情報が返されます:

    図4-62 ノートブック内に表示されているADBサービス・レベル情報


    ノートブック内に表示されているADBサービス・レベル情報

サービス・レベルがhighとして表示されるようになったことがわかります。この例の説明:
  • HMUGVWHGDA3DBYMはテナント名です
  • OMLLABS104047はデータベース名です
  • highはADBサービス名です
  • adb.oraclecloud.comはドメインです

ノートブック・クラシックでのインタプリタ・バインディングの確認

  1. 更新後のインタプリタ・バインディングを確認する必要があるノートブック・クラシックを開きます。
  2. 次のSQL文を実行します。
    %sql
    SELECT SYS_CONTEXT ('USERENV', 'SERVICE_NAME') FROM DUAL;
  3. このSQL文では、次のスクリーンショットで示すように、更新後のインタプリタ・バインディングについて次の情報が返されます:

    図4-63 ノートブック・クラシック内に表示されているADBサービス・レベル情報


    ノートブック・クラシック内に表示されているADBサービス・レベル情報

サービス・レベルがhighとして表示されるようになったことがわかります。この例の説明:
  • HMUGVWHGDA3DBYMはテナント名です
  • OMLLABS104047はデータベース名です
  • highはADBサービス名です
  • adb.oraclecloud.comはドメインです