本家様 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つの形式があるみたい.
他、考慮すべき事項として「誰が」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」を有効にした方が早い?