LoginSignup
0
0

富岳のPyTorch-1.13.0でja-ginza-bert-large (β版)をムリヤリ動かすには

Posted at

昨日の記事で書いたja-ginza-bert-large (β版)のプログラムを、スーパーコンピュータ「富岳」のspack0.19版python3.10に移植することを考えた。移植でツライのはSudachiPyで、富岳のrust1.60.0ではコンパイルしきれない。仕方ないので、rustの公式サイトからnightly toolchainをダウンロードして、RUSTFLAGS='-Z threads=8'高速コンパイルに挑戦することにした。

#! /bin/bash
#PJM -L rscgrp=small
#PJM -L elapse=6:00:00
#PJM -L node=1
#PJM -j
#PJM -S

. /vol0004/apps/oss/spack/share/spack/setup-env.sh
spack load py-torch@1.13.0/glqavnh
G=`id | sed 's/^.*gid=[0-9]*(\([^)]*\)).*$/\1/'`
set `ls -d /vol*/$G /vol*/data/$G` $HOME
export PYTHONUSERBASE=$1/GiNZA
export TMPDIR=$PYTHONUSERBASE/tmp
export CARGO_HOME=$TMPDIR/cargo
export PATH=$PYTHONUSERBASE/bin:$CARGO_HOME/bin:$PATH
mkdir -p $TMPDIR
pip3 install -U typing-extensions setuptools setuptools-rust deplacy --user
if [ ! -f $CARGO_HOME/bin/cargo ]
then P=$TMPDIR/rustup.$PJM_JOBID.$$.sh
     curl -L https://sh.rustup.rs -o $P
     sh $P -y --no-modify-path --profile minimal --default-toolchain nightly
     ln -s /opt/FJSVxtclanga/tcsds-1.2.36/bin/fcc $CARGO_HOME/bin/gcc
fi
env RUSTFLAGS='-Z threads=8' pip3 install https://github.com/megagonlabs/ginza/releases/download/v5.1.3/ja_ginza_bert_large-5.1.3b1-py3-none-any.whl --user

P=$TMPDIR/ginza.$PJM_JOBID.$$.py
cat << 'EOF' > $P
import spacy
nlp=spacy.load("ja_ginza_bert_large")
doc=nlp("吾輩はここで始めて人間というものを見た")
import deplacy
print(deplacy.to_conllu(doc))
deplacy.render(doc,Japanese=True)
print("\n")
from ginza import bunsetu_span,bunsetu_spans
from deplacy.deprelja import deprelja
for b in bunsetu_spans(doc):
  for t in b.lefts:
    print(bunsetu_span(t).text,f"-({deprelja[t.dep_]})->",b.text)
EOF
python3 $P

富岳のログインノードからpjsubしてみたところ、ジョブ待ち・ダウンロード・コンパイル等も含め、3時間20分ほどで以下の結果が得られた。

1	吾輩	吾輩	PRON	代名詞	Reading=ワガハイ	12	nsubj	_	SpaceAfter=No|Translit=我が輩
2	は	は	ADP	助詞-係助詞	Reading=ハ	1	case	_	SpaceAfter=No
3	ここ	ここ	PRON	代名詞	Reading=ココ	5	obl	_	SpaceAfter=No|Translit=此処
4	で	で	ADP	助詞-格助詞	Reading=デ	3	case	_	SpaceAfter=No
5	始め	始める	VERB	動詞-非自立可能	Inflection=下一段-マ行;連用形-一般|Reading=ハジメ	12	advcl	_	SpaceAfter=No|Translit=始める
6	て	て	SCONJ	助詞-接続助詞	Reading=テ	5	mark	_	SpaceAfter=No
7	人間	人間	NOUN	名詞-普通名詞-一般	Reading=ニンゲン	10	nmod	_	NE=B-Mammal|SpaceAfter=No
8	と	と	ADP	助詞-格助詞	Reading=ト	7	case	_	SpaceAfter=No
9	いう	いう	VERB	動詞-一般	Inflection=五段-ワア行;連体形-一般|Reading=イウ	8	fixed	_	SpaceAfter=No|Translit=言う
10	もの	もの	NOUN	名詞-普通名詞-サ変可能	Reading=モノ	12	obj	_	SpaceAfter=No|Translit=物
11	を	を	ADP	助詞-格助詞	Reading=ヲ	10	case	_	SpaceAfter=No
12	見	見る	VERB	動詞-非自立可能	Inflection=上一段-マ行;連用形-一般|Reading=ミ	0	ROOT	_	SpaceAfter=No|Translit=見る
13	た	た	AUX	助動詞	Inflection=助動詞-タ;終止形-一般|Reading=タ	12	aux	_	SpaceAfter=No


吾輩 PRON  ═╗<════════╗ nsubj(主語)
は   ADP   <╝         ║ case(格表示)
ここ PRON  ═╗<╗       ║ obl(斜格補語)
で   ADP   <╝ ║       ║ case(格表示)
始め VERB  ═╗═╝<════╗ ║ advcl(連用修飾節)
て   SCONJ <╝       ║ ║ mark(標識)
人間 NOUN  ═══╗<╗   ║ ║ nmod(体言による連体修飾語)
と   ADP   ═╗<╝ ║   ║ ║ case(格表示)
いう VERB  <╝   ║   ║ ║ fixed(固着)
もの NOUN  ═╗═══╝<╗ ║ ║ obj(目的語)
を   ADP   <╝     ║ ║ ║ case(格表示)
見   VERB  ═╗═════╝═╝═╝ ROOT(親)
た   AUX   <╝           aux(動詞補助成分)


ここで -(斜格補語)-> 始めて
人間という -(体言による連体修飾語)-> ものを
吾輩は -(主語)-> 見た
始めて -(連用修飾節)-> 見た
ものを -(目的語)-> 見た

単語間係り受け二文節間係り受けも、ちゃんと解析できているようだ。ただ、fugashiとSudachiPyの両方をインストールする、ってどう考えても無駄なので、できればGiNZA(というか日本語spaCy)がfugashiでも動くようになれば(実際spaCy 2.2.4あたりまではfugashiだった)、富岳で動かしやすくなるんだけどなあ。それともSudachiPyの方に、manylinux2014_aarch64のwheelをお願いする方がいいのかな。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0