本家様 https://cryosparc.com/

過去記事 cryoSPARC180829

cryoSPARC/update
cryoSPARC/memo
cryoSPARC/backup

利用するためにはインスタンスごとにライセンスコードが必要みたい
計算機に1つ立てるなら1つ. 計算機にユーザ毎に立てるならその分のコードが必要みたい.
非営利の学術研究なら無料みたい

まずはライセンスコードを取得します.

ライセンスコードを取得します。

https://cryosparc.com/download/に必要事項を記載してsubmitします。
直後に「応答メール」が届きますが、これにはライセンスコードは記載されてません。
最大24時間までにはライセンスコードが記載された返信メールが届きます。

これを使ってプログラムの入手、及び実行が可能になるみたい。
*外部に繋がるネットワークは必須. 外部に繋がらないと計算できないみたい

プログラムの入手

詳しくはhttps://guide.cryosparc.com/setup-configuration-and-management/how-to-download-install-and-configure/downloading-and-installing-cryosparc#use-curl-to-download-the-two-files-into-tarball-archivesに記載されている。
下記2つのファイルを取得します。

  • cryosparc_master.tar.gz
  • cryosparc_worker.tar.gz

どちらもライセンスコードを渡さないと得られない仕組みっぽい

[root@c ~]# mkdir -p /apps/src
[root@c ~]# cd /apps/src
[root@src ~]#  curl -L https://get.cryosparc.com/download/master-latest/"ライセンスコード" > cryosparc_master.tar.gz
[root@src ~]#  curl -L https://get.cryosparc.com/download/worker-latest/"ライセンスコード" > cryosparc_worker.tar.gz

proxy経由で取得が必要なら「curl」に「-x」でproxyサイトを指定する

運用形体

cryoSPARCは「Master」と「Worker」の2つから構成されている.
Master」はブラウザインターフェースを提供したり、ジョブのこれまでの経過をデータベースで管理するとかの機能を担う.
一方「Worker」は「Master」の指示に従い実際の計算を行う機能を担う.

システム要件はこちらに記載されている https://guide.cryosparc.com/setup-configuration-and-management/hardware-and-system-requirements#cryosparc-system-requirements

この2つの機能部分をどのように組み合わせて運用するかで3つの形式があるみたい.

  • スタンドアローン形式
    1台の計算機に「Master」と「Worker」が共存

  • Master-Worker形式
    1つの「Master」と1つ以上の複数の「Worker」から構成される.「Master」のブラウザの操作で使用するWorkerを決めて計算を行います

  • Clusters形式
    Master-Worker形式と同じだが、計算に使用する「Worker」の選択をジョブコントロール(OpenPBS,slurmとか)に一任します.

他、考慮すべき事項として「誰が」cryoSPARCの計算を行うのか決める必要がある.

  • ユーザ毎にcryoSPARCをインストールしてcryoSPARCを稼働させる
    ユーザの/home/<ユーザ>/cryoSPARC にアプリをインストールします
    計算条件・計算結果はそのユーザのみアクセス可能 /home/<ユーザ> のパーミッションが 0700とかで計算可能

  • 共有ユーザを作ってそのユーザでcryoSPARCを稼働させる
    共通ユーザcryoSPARCを作って /home/cryoSPARC/ にアプリをインストールします
    ユーザcryoSPARCがアクセス可能な場所でしか計算できない. データが /home/<ユーザ>(0700 パーミッション)の中にあるならユーザcryoSPARCがアクセスでないので計算不可

ユーザが1人で1つの計算機を占有できるなら、そのユーザがcryoSPARCを稼働させるユーザになってスタンドアローン形式が最適で一番楽に運用できるかと.

ユーザが複数で1台の計算機を使うなら、データの排他アクセスが必要ならユーザ毎にスタンドアローン形式でcryoSPARCを構築、排他アクセスが不要なら各ユーザのフォルダに共通ユーザcryoSPARCがアクセス可能にするACLを付与する.

ユーザが複数で複数の計算機を使うなら、...これも前述の「排他アクセス」次第でしょうか. 複数の計算機を自分で指定するか、ジョブコントローラーにお任せするかで作り方が違うくらいかな.

workerの動作要件

https://guide.cryosparc.com/setup-configuration-and-management/hardware-and-system-requirements#worker-node-cluster-worker-minimum-requirements

  • 最小要件
    GPU1基あたり2core以上で、かつシステムメモリーも1基あたり16GB以上.
    加え肝心のGPUは CC3.5以上でGPUカードに搭載のメモリーが11GB以上(1080Ti[GP102(3584),11GB], GTX TITAN X[GM200(3072),12GB] とか). CCに関しては 参照https://en.wikipedia.org/wiki/CUDA
  • 推奨
    GPU1基あたり4core以上で、かつシステムメモリーも1基あたり32GB以上. 4GPU構成なら128GB以上みたい
    そしてGPUは v100(GV100[5120],16GB:32GB), 2080Ti(TU102[4352],11GB), RTX3090(GA102[10496],24GB)などが推奨

再起動時の自動起動

*一応インストールした「cryosparc_master/systemd」に本家様の方法があります。

参照先: https://discuss.cryosparc.com/t/adding-cryosparc-to-systemd/1436
「cryosparc2_master」パッケージ内の「cryosparc2_master/deps/anaconda/etc/systemd/system/supervisord.service」

単純にsystemcdにUnit 定義ファイルを加えてみた
場所は「/etc/systemd/system/cryosparc.service」
*システム由来のunitファイル置き場「/usr/lib/systemd/system/」ではなく、管理者が面倒見る場所に配置します

「cryosparc.service」ファイルの中身は下記のようにします

[Unit]
Description=Cryosparc
After=network.target
 
[Service]
Type=forking
User=cryosparc
Group=em
ExecStart=/home/cryosparc/cryosparc_master/bin/cryosparcm start
ExecStop=/home/cryosparc/cryosparc_master/bin/cryosparcm stop
Restart=on-abort
 
[Install]
WantedBy=multi-user.target

「User」と「Group」は環境に応じて変更して下さい
「Restart=on-abort」がいいのか微妙. ふとすると勝手に停止しているときがあるので「Restart=always」と付けたいが、、

その後

[root@c ~]# systemctl daemon-reload
 
[root@c ~]# systemctl start cryosparc.service
 
 
[root@c ~]# systemctl status cryosparc.service
● cryosparc.service - Cryosparc
   Loaded: loaded (/etc/systemd/system/cryosparc.service; disabled; vendor preset: disabled)
   Active: active (running) since Sun 2020-10-25 00:16:02 JST; 17s ago
  Process: 186928 ExecStart=/home/cryosparc/software/cryosparc/cryosparc2_master/bin/cryosparcm start (略
 Main PID: 186953 (supervisord)
   CGroup: /system.slice/cryosparc.service
           tq186953 /home/cryosparc/software/cryosparc/cryosparc2_master/deps/anaconda/bin/python /hom(略
           tq186955 mongod --dbpath /home/cryosparc/cryosparc_database --port 39001 --oplogSize 64 --r(略
           tq187033 python -c import cryosparc2_command.command_core as serv; serv.start(port=39002)
           tq187056 python -c import cryosparc2_command.command_vis as serv; serv.start(port=39003)
           tq187061 python -c import cryosparc2_command.command_proxy as serv; serv.start(port=39004)
           mq187089 /home/cryosparc/software/cryosparc/cryosparc2_master/cryosparc2_webapp/nodejs/bin/(略
 
Oct 25 00:16:01 c.sybyl.local cryosparcm[186928]: command_proxy: started
Oct 25 00:16:02 c.sybyl.local cryosparcm[186928]: webapp: started
Oct 25 00:16:02 c.sybyl.local cryosparcm[186928]: ----------------------------------------------------(略
Oct 25 00:16:02 c.sybyl.local cryosparcm[186928]: CryoSPARC master started.
Oct 25 00:16:02 c.sybyl.local cryosparcm[186928]: From this machine, access cryoSPARC at
Oct 25 00:16:02 c.sybyl.local cryosparcm[186928]: http://localhost:39000
Oct 25 00:16:02 c.sybyl.local cryosparcm[186928]: From other machines on the network, access cryoSPARC (略
Oct 25 00:16:02 c.sybyl.local cryosparcm[186928]: http://c.sybyl.local:39000
Oct 25 00:16:02 c.sybyl.local cryosparcm[186928]: Startup can take several minutes. Point your browser (略
Oct 25 00:16:02 c.sybyl.local systemd[1]: Started Cryosparc.
 
[root@c ~]#

と一応の起動確認をしてから、再起動時にも起動できるように

[root@c ~]# systemctl enable cryosparc.service
Created symlink from /etc/systemd/system/multi-user.target.wants/cryosparc.service to /etc/systemd/system/cryosparc.service.
 
[root@c ~]#

として置く。

チュートリアル

cryoSPARC/run

メモ

workerでcudaを指定してコンパイルするのだが、当然ながらcudaの開発環境が必要. ただドライバーが 11.3 でcryoSPARCで使用する開発環境は 10.2 とかでも大丈夫みたい

yum install cuda-libraries-dev-10-2 cuda-libraries-10-2 cuda-command-line-tools-10-2

があればいいみたい.
ただ30x0を持つ計算機があるなら、30x0はcuda-11が必要なのでworkerノードには全てcuda-11を入れる必要がある.

cryoSPARCからtopazを実行できるが、これは外部のtopazをコールしているに過ぎない. topazもcudaライブラリが必要であるが、30x0ならcuda-11が必要.
っでtopazのインストールの際、pythonモジュールの cudatoolkit=11.1 とか pytorch-1.9.0 とかで作られるかを注意深く確認する必要があるみたい.

cryoSPARCからtopazをコールするにはtopazへのパスが必要. ここでのtopazなら「/apps/pyenv/versions/anaconda3-5.3.1/envs/topaz/bin/topaz」となる.
加えてcryoSPARCのtopaz関係を利用する際は、「Number of parallel threads」と「NUmber of CPUs」に要注意. この掛け算分のtopazプロセスが発行されます.
計算機によっては過負荷になるかも. 「Number of parallel threads」を1、「NUmber of CPUs」を8とかで8core使用とか初手は少なめに試すのが宜しいかと.

それと「CPU only」を有効にした方が早い?


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2022-10-04 (火) 12:03:25 (248d)