0
0

富岳のspack0.19版python3.10でtransformersをムリヤリ動かすには

Last updated at Posted at 2024-01-13

昨日の日記の続きだが、富岳のspack0.19版python3.10でtokenizersが動かない理由は、rustのスレッド周りにある。fcc(富岳のgccもどき)はスレッドをサポートしているので、そこはrustコンパイラをうまく繋いでやればいいのだが、私(安岡孝一)の力不足でうまく繋げない。ならばTOKENIZERS_PARALLELISM=falseで、tokenizersにスレッドを使わせないようにすれば、何とかtransformersが動くんじゃないだろうか。12月27日の記事のプログラムを、富岳のspack0.19に移し替えてみよう。

#! /bin/bash
#PJM -L rscgrp=small
#PJM -L elapse=1: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/PyTorch-1.13.0
export PATH=$PYTHONUSERBASE/bin:$PATH
export HF_HOME=$PYTHONUSERBASE
export TMPDIR=$PYTHONUSERBASE/tmp
mkdir -p $TMPDIR
pip3 install -U transformers --user

P=$TMPDIR/fillmask.$PJM_JOBID.$$.py
cat << 'EOF' > $P
from transformers import pipeline
fmp=pipeline("fill-mask","KoichiYasuoka/deberta-large-japanese-aozora")
print(fmp("夜の底が[MASK]なった。"))
EOF
env TOKENIZERS_PARALLELISM=false python3 $P

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

[{'score': 0.10754115134477615, 'token': 2113, 'token_str': '白く', 'sequence': '夜の底が白くなった。'}, {'score': 0.041453491896390915, 'token': 298, 'token_str': '重', 'sequence': '夜の底が重なった。'}, {'score': 0.03892168030142784, 'token': 3504, 'token_str': '黒く', 'sequence': '夜の底が黒くなった。'}, {'score': 0.0380183570086956, 'token': 114, 'token_str': 'どう', 'sequence': '夜の底がどうなった。'}, {'score': 0.03193163871765137, 'token': 3520, 'token_str': 'わるく', 'sequence': '夜の底がわるくなった。'}]

rustのスレッド周りを避ければ、一応transformersが動くようだ。tokenizersが遅くなるのさえガマンすれば、これで富岳のPyTorch-1.13.0が使えるかな。

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