RTX3070 の環境構築から
こちらあらB アドベントカレンダー 2020 12日目の記事です。
モラズbot とは
ここ1–2年くらいたまに気が向いたら遊びで作っている福岡の妙齢の女モラズこと、謎のツイッタラーモラズのbot のことである。モラズbot の経緯についてはブログ(君だけのモラズbot を作ろう)やあらB.fm Ep.1(Ep.1 A woman of strange age, Morazu)を参照されたし。
2020年夏 GPT-3 のニュース
上記過去のブログでは、2019年までのモラズbot の開発経緯と「結果的に RNN を使ったモラズbot Ver.2 は Ver.1 と大きな違いが見いだせなかった」という話を紹介した。
2020年 モラズbot作りに使えそうな目立ったニュースとして GPT-3 のニュースが挙げられる。GPT-3 とは、イーロン・マスク氏などが率いる非営利AI企業OpenAIの高性能言語モデルのことで、文章生成で精度の高い様々な事例を示し7月頃に話題となっていた。そして9月末に Microsoft が独占ライセンスを取得したというニュースも出ていた。
現状すぐ GPT-3 をモラズbot に使えるか?という問いは残念ながら「No」である。理由は、GPT-3 自体は API のみで公開されており、API 自体も “OpenAI API Waitlist” というフォームに利用用途を記載するような申請が必要でその申請後に OpenAI から返事をもらわないと使い始めることができないためである(先月申請してみたが連絡来なかった😿)。
GPT-2 をモラズbot に…?
そこで目を付けたのが GPT-2 であり、そちらは 2019年末頃に公開されている。
GPT-2 が RNN や LSTM のような以前のモデルとどのように異なるかという点、下記ブログの説明が参考になる。
GPT-2 の簡潔なまとめは下記。
一言で簡単にGPT-2といえば、「transformer + zero-shot learning + big data」だと思います。
つまり、RNN に比べて計算量削減できる transformer モデルを採用しただけでなく、未知の対象への予測のために関連性を見出す推論能力を機械に与える zero-shot learning, そして大量の学習データという3つを合わせたものが GPT-2 らしい。
それでは GPT-2 でモラズbot をすぐ作れるかというと残念ながら「No」である。課題としてはいくつかあるが、モラズbot の学習データが日本語であるという点がある。日本語コーパスを学習済みの GPT-2 モデルは既に公開されている。
ただ、残念ながら日本語の学習データの作り方や学習のさせ方については上記では紹介されておらず、あくまで既に学習済みのモデルから文章生成させるためのサンプルを動かす方法までしかないっぽい。
まずは英語データでもいいので適当なサンプルで学習する手順を確認するところあたりから始めてみようかと考えている(例えば下記とか)。
RTX3070 の環境構築から
モデルの学習自体には GPU を使った長時間の計算が必要そうなので、この前購入した RTX 3070 の環境構築からはじめた。
RTX3070 自体は NVIDIA GPU として発売してまだ1ヵ月半くらい(2020年12月時点)なので、NVIDIA Driver や CUDA, cuDNN など古いバージョンでは動作せず、Pytorch も公式から新しい CUDA 用のバイナリの配布もないため、ソースからビルドが必要だった。
今回下記バージョンで Pytorch が GPU で計算できるところまで確認した。
- NVIDIA Driver 455.32.00
- CUDA 11.1
- cuDNN 8.0.5
- Pytorch 1.8
手順自体は下記ブログが参考になった。
(ちなみに、Pytorch のソースコードからのビルドはそのままだとエラーになったので、Pytorch の公式手順等を参考にした。公式手順もそのままだとエラーにはなったが、エラーメッセージ読んでググって試行錯誤で解決した。うーむ、RTX30系統は環境構築だけでもまだまだ面倒である)
おわり
さすがにアドベントカレンダーを書く準備の2–3時間では GPT-2を動かすところまで全然できなかったが、GPT-2 とはどのようなもので、モラズbot を作るためにどのような課題がありそうかという点の洗い出しはできた気がする。あとは冬休みの宿題としてボチボチと進めていけたらと思う。