インストールと準備
インストール
インタラクティブジョブの実行
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サーバ、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