更新履歴

2024-05-22

  • 「Dockerコマンドを実行するユーザーをdockerグループに追加」を追記しました。

概要

mdxは大学・研究機関で共創する産学官連携のためのデータプラットフォームです。

https://mdx.jp/

今回は、mdxの仮想マシンを使用して、NDL古典籍OCRを実行してみます。

https://github.com/ndl-lab/ndlkotenocr_cli

プロジェクトの申請

今回、プロジェクトタイプは「お試し/Trial」を選択しました。

「お試し/Trial」では、1つのGPUパックが割り当てられました。

仮想マシンの作成

デプロイ

今回は、「01_Ubuntu-2204-server-gpu (Recommended)」を選択しました。

デプロイ前の画面では、以下のように設定しました。パックタイプを「GPUパック」、パック数を1としました。

公開鍵については、ローカルPCで以下のように作成しました。

csdsh~-/k.esysghe/nmdx

その後に作成されたid_rsa.pubの内容を貼り付けました。

その後、仮想マシンのデプロイが完了するまで少し待ちます。

SSH接続のためのネットワーク設定

以下の動画を参考に進めることができました。

https://youtu.be/p7OqcnXBQt8?si=E5JtC-xnrc5ZQYo_

まず起動した仮想マシンのサービスネットワーク1のIPv4アドレスを控えておきます。

次に、ネットワークタグから「DNAT」を追加しました。「転送元グローバルIPv4アドレス」は自動入力され、「転送先プライベートIPアドレス」に先ほど控えておいたサービスネットワークのIPv4アドレスを入力しました。

次に「ACL」を追加しました。動画にならって、以下のように設定しました。

特定のIPアドレスからのみアクセスする場合、以下のように設定しました。

一方、セキュリティの観点から、無制限に任意のアドレスからのアクセスを許可するのはリスクが伴いますが、以下のように設定することで、任意のアドレスからssh接続できるようです。

接続を試す

DATで追加した転送元グローバルIPv4アドレスを使用します。初期ログイン後、パスワードの変更が求められるので、変更します。

sshmdxuser@<DATIPv4>-i~/.ssh/mdx/id_rsa

VS Codeで接続する

その後の操作は、必須ではありませんが、VS Codeの拡張機能である「Remote Explorer」を使いました。

仮想マシン内での作業

GPUの確認

sruo==doNGF=NP=otVPa=/rG=N@IUn=0AoP=osuD=cU=ubI=e=ruANT=Ns=un-ae=V2s=ntSmm=I5eGI=nuMep=DCsID=i-I=I:=n2=A=g25==03P=ACI=p45e=1PID=r:.r=00=o/8f=0=ch6=-=eo.=S=sm1=X=se0=M=e/=4=sm=-=d=4P=fx=0I=ou=GD=us=B=nePP==drew==#rr=T=s:=4y=niU=5p=vss=We=ita==deg=/=iDne==arc/=4P=-ieC=O0r=sv-a=n0o=meMp=Wc=ir=e=s=V=s=eB=0=ru=0n=ss=0a=i-=0m=oI=0e=nd=04=:=0M==0i=5M=:B=3e=0=5m=3/=.o=:=8r=04=6y=00=.D-=.9=1iU=06=0ss=0=pa=OM=.g=fi=Ae=fB===C=U==DVG==AoP==lU==Va-==etU==rit=0=sli=%=iel==o==nU==:nC=GU=co=Ps=1om=DUa=2rp=Dig=.ruM=esMe=2.tI=fae=eG=abm=E=ulo=CMM=ler=C..=0tdy===

Dockerのインストール

以下のページの手順に沿って、Dockerをインストールしました。

https://docs.docker.com/engine/install/ubuntu/

fssscsesssouuuuucuuurdddrdh""sdddooolood$uooope(dkaai-cb.oaadgppnfhppottssm[/tttci--tSoaee--knggaLdrteggeeelcceerdttlhah/ttot+=ercui-tr"stuiukpnmp$-cpnnedss/(r/dsrat0:edeaath.ta7/tplptaeiel5/cketellol5dga/llassodc-wpeod-oadnt-uowc-lp&rcokc/kr&ckreeeaeieelrrtdynesrd-tc.rtc.-didi-hlcofaonaoiecipcgrsctksc"tdda/e/h$.ootkrdiVdccee.otE/kksycceRdeerokcSorrcimetIc--un/ruOkccrgl.rNeeolsige_r-mnp)C.cpgug"OllonxDiisu/sEsepuiNtcgbgAopunM>noneEtdtd"/amu-)dia/b"enngyve-p=s/rdg/tndoeau.c|tblikclloes/erua"ddpocot|co/kngketperagy-irbniue-nirdgldesda/xrrd-umopnoclcrku;egrid.nog/pdsegout]cdcko/heatrapt-ptpct/so-k:mge/pey/otrdsioernw-egnpmsllo/ouvdageodic.n$kdpeokrcg.k;geprdg.ocnoem/linux/ubuntu\

Hello from Docker!と表示されれば成功です。

NVIDIA Docker Runtime

(他にもよい方法があるかもしれませんが、)NVIDIA Docker Runtimeをインストールします。以下を実行しました。

#dccssiuuuuAsrrdddtlloodri--astbsspyhutset---tiLLgepoemanhhtcc=tttk$ttula(pppg.ssdre::ae//tsre/etetnnapcv&ro/ii&tsoddisiisdt-aauoor..dcreggokiliieeettarsahhpsuutebb-;..geiiecoth/nnivvn$iisIddtDiia$aalV--lEddRoo-SccyIkkOeenNrrv_//iIg$dDpdi)giaks-etcyroin|btuastiuindoeonr/-antpvotio-dlkikeaiy-tdaodcdke-r.list|sudotee/etc/apt/sources.list.d/nvidia-docker.list

Dockerコマンドを実行するユーザーをdockerグループに追加

ユーザーをDockerグループに追加

sudousermod-aGdocker$USER

システム再起動

sudoreboot

NDL古典籍OCRのインストール

ここから、NDL古典籍OCRのセットアップを進めます。

以下は少し時間がかかります。

gcsidhtncd/lldokonocetkeehnrto/tcdpros_c:ck/le/irgbiutihludb..schom/ndl-lab/ndlkotenocr_cli

次に、コンテナの起動を行いますが、ホストマシンのディレクトリをマウントするように変更しておきます。

dockerrun-gpusall-d/home/mdxuser/tmpdir:/root/tmpdir-rm-namekotenocr_cli_runner-ikotenocr-cli-py37:latest

そして、以下を実行します。

sh/docker/run_docker.sh

コンテナに入ります。

sshmdxuser@<DATIPv4>-i~/.ssh/mdx/id_rsa

0

推論の実行

画像のダウンロード

ディレクトリを作成して、「源氏物語」(国立国会図書館所蔵)をダウンロードします。

sshmdxuser@<DATIPv4>-i~/.ssh/mdx/id_rsa

1

OCRの実行

ダウンロードした画像に対して、OCRを実行します。

まず、出力フォルダを作成しておきます。

sshmdxuser@<DATIPv4>-i~/.ssh/mdx/id_rsa

2

実行します。

sshmdxuser@<DATIPv4>-i~/.ssh/mdx/id_rsa

3

結果、ホストマシンの/home/mdxuser/tmpdir/outputフォルダに認識結果が格納されます。

その他

コンテナの停止

sshmdxuser@<DATIPv4>-i~/.ssh/mdx/id_rsa

4

仮想マシンのシャットダウン

sshmdxuser@<DATIPv4>-i~/.ssh/mdx/id_rsa

5

まとめ

mdxやNDLラボのおかげで、機械学習を用いた研究に取り組みやすい環境が整っていると感じました。関係者の方々に感謝申し上げます。