« Calm2-7B-Chatで小説のテキストファイルを読ませてあらすじを書かせてみた (メインメモリー64GB+GTX1650Ti) | トップページ | 16インチのモバイルモニター買った »

2023年11月 9日 (木)

Calm2-7B-Chatを完全オフラインで使う

自宅では気づかないのですが、会社だと気になることがあります。
それは、以下の記事で紹介した生成AI「Calm2-7B-Chat」

Calm2-7B-ChatのGPTQ版をうちの低メモリーGPU環境で動かしてみた: EeePCの軌跡

を使う度に、都度、huggin faceのサイトにモデルを参照しているということ。
会社ではプロキシの関係で、ちょっと接続の際にはややこしいことをしなきゃいけないので、これが結構煩わしい。

ということで、このCalm2-7B-Chatのモデルをダウンロードし、完全にオフラインな状態でも使えるようにしたいと思いまして、ちょっと調べてみました。
で、生成AIのモデルをダウンロードするコードを以下のように作成。


from huggingface_hub import snapshot_download
snapshot_download(
    repo_id="mmnga/cyberagent-calm2-7b-chat-GPTQ-calib-ja-1k",
    revision="main", repo_type="model", local_dir="./model",
    local_dir_use_symlinks=False,)

これを実行すると、このコードと同じ場所に「model」というフォルダが作られて、その中に4GBほどのファイルが収まってるはずです。

その後、


from auto_gptq import AutoGPTQForCausalLM
from transformers import AutoTokenizer, TextStreamer
model_name_or_path = "./model"
tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, trust_remote_code=True)
model = AutoGPTQForCausalLM.from_quantized(model_name_or_path, use_safetensors=True, device="cuda:0")
streamer = TextStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
output = ""
i = 1
while True:
    user_input = input("ユーザー入力" + str(i) + ":")
    if user_input=="":
        break
    prompt = output + "USER: " + user_input + "\nASSISTANT: "
    output = tokenizer.decode(model.generate(**tokenizer(prompt, return_tensors="pt").to(model.device),
                                             max_length=1000,
                                             streamer=streamer)[0]).replace("<|endoftext|>","") + "\n"
    i +=1

を実行すると、前回の記事と同様のチャットモードになります。
モデルの名前が「./model」となっているのがミソ。つまり、このフォルダ内にあるモデルを読み込んで実行しているということを意味します。
で、一度ダウンロードした後、Wi-Fiを切った状態でも動きました。つまり、完全にオフライン動作していることに。

もっとも、モデルがマイナーアップデートされた際などは反映されなくなるので注意。その際は、再び一つ目のコードを実行するのみですが。

社内で〇秘のデータを扱いたい場合などは安心ですね。


生成AI時代の「超」仕事術大全

« Calm2-7B-Chatで小説のテキストファイルを読ませてあらすじを書かせてみた (メインメモリー64GB+GTX1650Ti) | トップページ | 16インチのモバイルモニター買った »

数値解析系」カテゴリの記事

コメント

前回の話でCOBOLの云々をコメントしましたが
アレの場合、セキュリティ上の問題でクローズドな開発環境が
前提だったりしたので、単独動作出来るのであれば
そういう会社に提案したら効率よくなりそうです。

今でも金融の根っこ部分ではCOBOLソースで開発が
残ってると思われますし、今までのソースをご破算にして
新規に作るなんて出来ませんから
(だから全銀システムのような問題もあるんですが

> mokekyoさん

似たような事情?がFORTRANにもあるようでして、私が以前関わっていた解析業務用のソフトは、今でもFORTRANだそうです。
このため、新しいアルゴリズムやハードウェアの進化についていけないところがあるみたいですが、かといってコードの大幅変更は解析精度を落としたり、これまでのノウハウが使えなくなったりとで、おいそれとはいかないようです。
そういえば学生時代はFORTRAN使いでしたけど、今はもうすっかり忘れてしまいました。とはいえ、あの言語から学んだことはたくさんあって今があると思ってます。ああ、さらにいえば、論文作成にはLaTeXっていう、これまたプログラム的なものを使ってましたが、あれもまだ現役で使われてるみたいです。古い言語だからと言って、必要な人は必要なのだと感じます。

コメントを書く

(ウェブ上には掲載しません)

« Calm2-7B-Chatで小説のテキストファイルを読ませてあらすじを書かせてみた (メインメモリー64GB+GTX1650Ti) | トップページ | 16インチのモバイルモニター買った »

当ブログ内検索

スポンサード リンク

ブログ村

無料ブログはココログ