メインコンテンツへスキップ
見出し画像

AI初心者が日本語LLM ELYZA稼働してみた(環境構築〜テスト稼働)

    こんにちは。Rcatです。前回の記事では"rinna"という大規模言語モデルを扱ってチャットしてみました。そんな中新たな通知が…。
    日本語が使えるオープンソースLLMは他にもあるようで、ELYZAというものを見つけました。
    こちらはパラメーターが70億で前回のRinnaの倍近くあります。これは期待できそう!
    というわけで今回はこちらを稼働させてみたいと思います。

    環境構築

    まずは環境を構築します。
    単純にインストーラーダブルクリックで終わるわけではないので、難しいかとは思ったのですが、Pythonの機械学習ライブラリに読み込ませるだけのようだったので思った以上に簡単に使用できました。
    やり方はrinnaと同じなので、前回の記事を参考にしてもらえると良いです。

    次回の記事は以下

    モデルのリンクなどは公式さんのnoteに貼ってあります

    テスト稼働

    では、早速テスト稼働します。サンプルコードをコピーして使用してみましょう。

    ソースコード

    前回同様ほぼコピペなので画像です。
    私だけなのかもしれませんが、ここで気をつけないといけないのは、以下のよう後ろの引き数をコメントアウトしないと動きませんでした。
    model = AutoModelForCausalLM.from_pretrained(model_name)#, torch_dtype="auto")

    ちなみに出たエラーは以下のようになります。
    小数型のデータ変換エラーみたいですがなぜ出てくるのかは分かりません。
    とりあえずrinnaのときにはなかった引数だったので、それを無効にしたところ、正常に動作することを確認しました。
    RuntimeError: "addmm_impl_cpu_" not implemented for 'Half'

    画像

    稼動してみる

    せっかくなのでプロンプトだけはオリジナルに変えておきます。
    前回rinnaで失敗したこれですね。

    画像

    というわけで、早速スクリプトをコマンドプロンプトから実行

    画像
    画像
    「ねこはとてもかわいく人気があります。」を英語に翻訳すると、 "Cats are very cute and popular."になります。

    なんか正解っぽい回答が返ってきましたね。
    では、こちらを翻訳していただきましょう。


    画像

    はい、完璧です。
    2倍ぐらいのパラメーター数でここまで差があるなんてちょっとびっくり

    パフォーマンス

    重要な話だと思うんですが、こういう使ってみた系を調べてみても、パフォーマンスについて書いてないことが多いんですよね。
    単純に動いた動かないだけではなく、実行時間など具体的な数値が気になりますよね。
    というわけで私は書きます。

    テスト環境

    CPU : Ryzen5 3600
    MEM : DDR4 48GB 2666MHz
    GPU : RTX2060 (無効)

    メモリ

    今回のモデルはパラメーターが70億と前回のrinna(40憶)よりも大きいものなので心配でしたが、何とか動かすことができました。
    稼働時で約30GB使用します。(プログラム終了後は6GBなので、それ以外はこいつが使ってる)
    読み込み時はもう少し使用するようで、最大値は40gbを超えましたので落ちるかとヒヤヒヤしました。
    とりあえず64GB積んでるパソコンなら動かせそうですね。
    私みたいに48GBとかいう中途半端な人はまあないでしょう。
    というか、GPUにモデルを読み込む的な指示がありますが、こんなの読み込めるんですかね?数枚差しとかでしょうか?

    画像

    CPU使用率

    CPU使用率は前回同様約60%を維持
    色々調べましたが、基本的にAIは大規模の並列演算を必要とするようなので、多分一コア当たりMAX使うと言ったことがないんでしょうね。
    つまり、もっとスレッドの多いCPUを使えばGPUには及ばとも処理速度を上げられるということでしょうか?
    ちらっと見た8コア528スレッドのCPUに期待ですね。本当に出るのかな?

    画像

    追記

    この次の記事ができた後の追記内容になります。
    このAIをGPUとCPUでそれぞれ動作させてみました
    また、浮動小数点の精度を16と32で試しています。なお、CPUで半精度はエラーになってしまったので実験できませんでした。
    結果から言うと以下です。
    GPUが負けてしまう結果になりました。
    単純に性能が低いだけなのか?それとも共用メモリを使っているため、転送速度が響いて速度が落ちているのか、そこまでは分かりません。
    ただ、CPUで使えなかった半精度が使えるのでその場合は早くなりますね

    画像

    まとめ

    今回は二つ目の大規模言語モデルイライザを試しました。
    前回のrinnaでやりたかった。英語の翻訳がこのAIはできるようなので、次回は同じくチャットサーバーに内蔵していろいろやってみようと思います。

    次回の記事は以下


     
     
    モノづくりが趣味。 "売ってないなら自分で作ればいいじゃない"をコンセプトに、機械/電気/AI/プログラム/ネットワーク 全部やります。 記事執筆はAI不使用。 ご連絡や利用規約はプロフィール記事参照。

    あなたへのおすすめ