コンテンツにスキップ

Singularity Global Clientの利用

Singularity Global Client (sregistryコマンド)はSingularityで使用するイメージを管理するためのソフトウェアです。レジストリからイメージの取得にも利用可能です。

利用方法

事前に次の手順を実施することでsregistryコマンドをABCIで利用できます。

[username@es1 ~]$ module load singularitypro python/3.6/3.6.12 sregistry-cli
[username@es1 ~]$ sregistry --help
usage: sregistry [-h] [--debug] [--quiet] [--version]
                 {version,backend,shell,images,inspect,get,add,mv,rename,rm,search,build,push,share,pull,labels,delete}
                 ...

Singularity Registry tools

optional arguments:
  -h, --help            show this help message and exit
  --debug               use verbose logging to debug.
  --quiet               suppress additional output.
  --version             suppress additional output.

actions:
  actions for Singularity Registry Global Client

  {version,backend,shell,images,inspect,get,add,mv,rename,rm,search,build,push,share,pull,labels,delete}
                        sregistry actions
    version             show software version
    backend             list, remove, or activate a backend.
    shell               shell into a Python session with a client.
    images              list local images, optionally with query
    inspect             inspect an image in your database
    get                 get an image path from your storage
    add                 add an image to local storage
    mv                  move an image and update database
    rename              rename an image in storage
    rm                  remove an image from the local database
    search              search remote images
    build               build an image using a remote.
    push                push one or more images to a registry
    share               share a remote image
    pull                pull an image from a registry
    labels              query for labels
    delete              delete an image from a remote.

利用するレジストリ毎にSingularity Global Clientの設定手順やサポートしているアクションが異なります。 詳しくはクライアントチュートリアルから利用希望のレジストリに関するページを参照してください。

実行例

実行例として、Amazon Elastic Container Registry (ECR) のmyrepos/tensorflowレポジトリからlatest-gpuタグのイメージを取得し、カレントディレクトリにmytensorflow.simgファイルとして保存する手順を示します。

Note

手順はAWS CLIの利用アクセストークンの登録手順を完了していることを前提としています。

Singularity Global ClientとAmazon ECR利用に必要なモジュールの読み込みます。

[username@es1 ~]$ module load singularitypro python/3.6/3.6.12 sregistry-cli aws-cli

Amazon ECRを利用するための設定を行います。aws ecr describe-repositoriesコマンドで<registryId><region>を確認し、それぞれ環境変数に設定します。

[username@es1 ~]$ aws ecr describe-repositories --repository-name myrepos/tensorflow
{
    "repositories": [
        {
            "repositoryArn": "arn:aws:ecr:<region>:<registryId>:repository/myrepos/tensorflow",
            "registryId": "<registryId>",
            "repositoryName": "myrepos/tensorflow",
            "repositoryUri": "<registryId>.dkr.ecr.<region>.amazonaws.com/myrepos/tensorflow",
            "createdAt": 1572261978.0,
            "imageTagMutability": "MUTABLE"
        }
    ]
}
[username@es1 ~]$ export SREGISTRY_AWS_ID=<registryId>
[username@es1 ~]$ export SREGISTRY_AWS_ZONE=<region>

イメージを取得し、mytensorflow.simgファイルとして保存します。次回以降は、モジュールの読み込みだけでイメージ取得できます。

[username@es1 ~]$ sregistry pull --name mytensorflow.simg --no-cache aws://myrepos/tensorflow:latest-gpu
  • aws:// URIは次のようにタグ付けしたリポジトリ名を指定します。 aws://<repositoryName>:<imageTag>

取得したイメージをインタラクティブジョブとして実行します。

[username@es1 ~]$ qrsh -g grpname -l rt_F=1 -l h_rt=1:00:00
[username@g0001 ~]$ module load singularitypro
[username@g0001 ~]$ singularity shell --nv ./mytensorflow.simg
Singularity: Invoking an interactive shell within container...

Singularity mytensorflow.simg:~>