はじめに
かの有名な自然言語処理の参考書籍「大規模言語モデル入門」を学習し始めました。
この書籍はPython×Google colaboratory(Colab)でソースコードを実際に動作させます。
そんな構成で大規模言語モデルについて学んでいこうというものです。
Colabを利用するのは無料で、環境構築をしなくて済むというメリットがあります。
だがしかし、問題点もあります。
Colabにはセッション、ランタイムというものがあり、
- pip install
- import
上記のような操作は一定時間でリセットされてしまいます。
つまり、上記を含むコードを再び実行しなければ実行していない状態と同じになります。
もちろん、このような書籍は1日ですべての内容を終えることはできるはずもなく、必然的に日をまたいだ勉強になります。けれど、日を空けるごとに毎回上記のコードを実行して数分をとられるとストレスがかかります。
この対策として利用するパッケージのtransformersや言語モデルをローカル環境で保存します。これにより、余計な手間を省き、ストレスを軽減して勉強を捗らせよう、という目論見でtransformersをローカル環境で利用する準備を行っていきたいと思います。
そもそもtransformerとかって何?
Transformerは機械翻訳のモデルとして考案されたニューラルネットワークです。我々が日々利用している機械翻訳に利用されているものです。Chat GPTなんかも自然言語処理の分野でTransformerの技術を元に作られています。これらは自然言語処理と呼ばれる分野です。詳しくは下記のURLから調べてください。
免責事項
他の記事ではtransformersは仮想環境での構築推奨など書いてあります。
ライブラリや環境の関連などは詳しくないため、他の記事を同時に参照して各自の責任でお願いします。
環境
- Visual Studio code(1.93.1)
- Windows 11
- Python(3.11.4)
すること
- 仮想環境の構築
- transformersのインストール
- モデルのダウンロード
仮想環境の構築
ソースコードのデータを入れるフォルダにcd
コマンドで移動してください。
そして、以下のコマンドを入力してください。
様々なフォルダやファイルが自動生成されれば完了です。
python -m venv .env
続いて、仮想環境の有効化です。
以下のコマンドで問題なく動けば終了。
.venv\Scripts\Activate
ただ、なぜか今の環境ではエラーが出てしまったので、同様の人はちょっとしたVScodeの設定をしてください。settings.json
のどこかに以下を書き込み、上記のコマンドを実行すれば動作するはずです。
{
"terminal.integrated.env.windows": {
"PSExecutionPolicyPreference": "RemoteSigned"
}
}
これについては下記の記事を参考にしました。
transformersのインストール
ここからが本番です。
transformersはPythonのライブラリでpipを利用してインストールできます。
ただ、ここでabeja/gpt2-large-japanese
というモデルを利用するため、ここで必要なパッケージも同時にインストールします。
pip install transformers[ja,sentencepiece,torch] pandas
これで完了です。
では、
インストールできたか以下のコマンドでチェックしましょう。
pip list
transformers 4.45.0
しっかりインストールできてますね。
簡易的な実行
ローカル環境で利用する前に、
そもそもネット接続でしっかり利用できるのか確認します。
実行してから多少の時間はかかると思います。
from transformers import pipeline
generator = pipeline('text-generation', model='abeja/gpt2-large-japanese')
outputs = generator('日本で一番高い山は')
print(outputs[0]['generated_text'])
日本で一番高い山は富士山で、高さは3,310mになります。山の高さは日本一で、日本人の誇りになります。 一説には世界で一番高い山はアメリカのサンフランシスコから見えています。それもそのはず
GPTというモデルを利用しているので、文字列を与えるとそれっぽい文章を生成してくれます。どんどんと、意味不明な文章が生成されていきます。
ちなみに、国土交通省がウェブサイトに載せている情報では富士山の高さは3,776.24mになります。
なにはともあれ、インストールしたライブラリが正しく動作することを確認できました。
モデルのダウンロード
さて、実際に今のをローカル環境だけで完結させたいと思います。
これはダウンロードに数分時間がかかりました。
from huggingface_hub import snapshot_download
snapshot_download(repo_id = 'abeja/gpt2-large-japanese')
huggingface_hubはpip transformers
するとき、同時にインストールされています。
snapshot_download
に関してはモデルのリポジトリのデータをすべてダウンロードします。これらに関する仕様については以下のURLから辿って確認してください。
ちなみに、
ここでダウンロードしたデータはC:\Users\ユーザー名\.cache
のフォルダに保存されています。任意の場所にデータを配置する場合には以下のような引数を指定します。この場合にはカレントディレクトリ内のgpt2-large-japanese
というディレクトリにデータが配置されます。
from huggingface_hub import snapshot_download
snapshot_download(repo_id='abeja/gpt2-large-japanese', local_dir='./gpt2-large-japanese')
ローカル環境での実行
確認したい方はここでネット接続を切断してみてください。
最初に実行したときとほとんど変わらないコードですが、ローカルにあるデータを参照して実行されています。
from transformers import pipeline
generator = pipeline('text-generation', model='./gpt2-large-japanese')
outputs = generator('日本で一番高い山は')
print(outputs[0]['generated_text'])
日本で一番高い山は何と言っても富士山 だと思います ^^; 今までで1番高い山は、三重県にある鈴鹿サーキットで標高2,763mですね 1月17日に行ったのですが、山頂
先ほどと内容は違いますが、しっかりと生成できています。これで、ローカル環境でtransformers(主にgpt2-large-japanese)を利用することができるようになりました。他にも様々なモデルがあるので下記のページにあるモデルを眺めて興味があればダウンロードしてもよいかもしれませんね。
以上、transformers,gpt2-large-japaneseをローカル環境で利用するを閉めたいと思います。
また機会があればお会いしましょう。
参考記事
書籍
自然言語処理について
環境構築について
モデルのダウンロードについて