コンテンツにスキップ

インストールと準備

インストール

インタラクティブジョブの実行

Prefectと関連パッケージをインストールするためにインタラクティブジョブを実行します。

[username@qes01 ~]$ qsub -l rt_QF=1 -W group_list=grpname -I

grpname: 所属するグループ名に置き換えてください。

Python 仮想環境

Python 仮想環境の作成から起動までの流れを以下で説明します。

バージョンの設定

moduleコマンドで、利用する Python バージョンを 3.11 に設定します。

[username@qh001 ~]$ module load python/3.11/3.11.14

Note

本パッケージは、Python 3.11 環境でのみ動作します。 Singularity コンテナを用いたタスク実行にて、使用するコンテナイメージで Python 3.11 を使用するためです。

仮想環境の作成および起動

Python の仮想環境を作成し、起動します。

[username@qh001 ~]$ python3 -m venv <venv_name>
[username@qh001 ~]$ source <venv_name>/bin/activate

venv_name: 任意の仮想環境名に置き換えてください。

関連パッケージのインストール

本ドキュメントのワークフロープログラムで使用するパッケージをインストールします。

(venv_name) [username@qh001 ~]$ pip install qiskit==1.4.5 qiskit-aer==0.15.1 quri_parts_oqtopus==1.0.3 dask-jobqueue==0.9.0

Prefectのインストール

拡張パッケージのprefect-singularityのインストールを通して、Prefectをインストールします。prefect-singularityはソースから直接インストールします。

インストールの流れを以下で説明します。

リポジトリのクローン

リポジトリを任意の作業フォルダーにクローンします。

(venv_name) [username@qh001 ~]$ git clone https://github.com/QuAILib/prefect-singularity.git

プロジェクトディレクトリに移動

クローンしたプロジェクトディレクトリに移動します。

(venv_name) [username@qh001 ~]$ cd <your-work-dir>/prefect-singularity

pip インストール

pip を使用してパッケージをインストールします。

(venv_name) [username@qh001 ~]$ pip install .

準備

本ドキュメントで説明のために構築するPrefectの環境を以下の図に示します。

Prefect環境構成図

ここでは、一つの計算ノード上で、Prefectサーバ、Pythonで書かれたワークフロープログラムrun/cancel等のPrefectコマンドを実行しますが、実際の運用にあたっては、それぞれ別々の異なる計算ノードで実行可能です。

インタラクティブジョブの実行

Prefect サーバーを計算ノードで起動するために、インタラクティブジョブを実行します。

[username@qes01 ~]$ qsub -l rt_QF=1 -W group_list=grpname -I

grpname: 所属するグループ名に置き換えてください。

仮想環境の起動

prefect-singularity をインストールした仮想環境を起動します。

[username@qh001 ~]$ module load python/3.11/3.11.14
[username@qh001 ~]$ source <venv_name>/bin/activate

Prefectの設定

Prefect サーバー起動前に、Prefect の設定を行います。

ABCI-Q の計算ノードにおいて Prefect サーバーを使用するための設定項目は、以下の通りです。

コンフィグ名 設定値
PREFECT_API_URL http://<ip_address>:<port>/api
PREFECT_UI_API_URL http://127.0.0.1:<port>/api

ip_address: Prefectサーバーを起動する計算ノードのIPアドレス

port: ポート番号

Info

Prefectの設定は、環境変数、.envファイルなど、さまざまなソースから可能です。 詳しくは Prefect のドキュメントを参照ください。

環境変数を使用したPrefect設定の例

ここでは、Prefect サーバーを起動するために、IPアドレス 10.0.0.33 を持つ計算ノードを使用しています。 IPアドレスは次のようにして確認できます。

(venv_name) [username@qh001 ~]$ hostname -i
10.0.0.33

また、Prefect サーバーはポート 4200 で起動します。

(venv_name) [username@qh001 ~]$ export PREFECT_API_URL='http://10.0.0.33:4200/api'
(venv_name) [username@qh001 ~]$ export PREFECT_UI_API_URL='http://127.0.0.1:4200/api'

Tips

Prefectの設定は、prefect config viewコマンドで確認できます。

設定確認の例

(venv_name) [username@qh001 ~]$ prefect config view
🚀 you are connected to:
http://10.0.0.33:4200
PREFECT_PROFILE='local'
PREFECT_API_URL='http://10.0.0.33:4200/api' (from env)
PREFECT_UI_API_URL='http://127.0.0.1:4200/api' (from env)

Prefectサーバー起動と停止

Prefectサーバーの起動と停止は、以下のように行います。

起動

ABCI-Q 計算ノードにおいて、ローカル Prefectサーバーをバックグラウンドで起動します。

ここでは、ローカルマシン以外から Prefect UI にアクセスするために、--host オプションに 0.0.0.0 を指定しています。

(venv_name) [username@qh001 ~]$ prefect server start --host 0.0.0.0 -b

Note

初回起動時は下記のメッセージが表示されます。 一度エンターを押してから、新しいプロファイル名を入力してエンターを押してください。

The `PREFECT_API_URL` setting for your current profile doesn't match the address of the server that's running. You need to
set it to communicate with the server.
? How would you like to proceed? [Use arrows to move; enter to select]
> Create a new profile with `PREFECT_API_URL` set and switch to it
  Set `PREFECT_API_URL` in the current profile: 'ephemeral'
? Enter a new profile name:

停止

利用終了後は、Prefect サーバーをシャットダウンします

(venv_name) [username@qh001 ~]$ prefect server stop

Prefect UI へのアクセス

ローカルブラウザから Prefect UI へのアクセスは、以下のように行います。

ここでは、計算ノード qh001 においてポート 4200 で起動した Prefect サーバーを使用しています。

SSHトンネル作成

ローカル PC からアクセスサーバー(qas.q.abci.ai)にログインして、SSH トンネルを作成します。

[yourpc ~]$ ssh -i /path/identity_file -L 10022:qes:22 -l username qas.q.abci.ai

ポート転送

続いて、別のターミナルを起動し、SSH トンネルを用いてローカル PC へポート転送を行います。

[yourpc ~]$ ssh -N -L 4200:qh001:4200 -l username -i /path/identity_file -p 10022 localhost

qh001: Prefectサーバーを起動した計算ノードのホスト名

ブラウザにて表示

ローカル PC のブラウザから次の URL にアクセスします。

http://localhost:4200/dashboard