Rinna4BをCtranslate2で軽くしてWindowsで動かした。

一昨日、昨日と頑張ってた「Japanese StableLM Alpha」なのだけど、とりあえず他のから動かしてみて、実績を作る事にした。そのうち、分からなかったところも治せるようになるだろう。

そんなわけで今朝は「rinna/bilingual-gpt-neox-4b-instruction-ppo」をCtranslate2で量子化して動かす事にチャレンジ。

主にこちらを参照に。他にも色々見てたのだけど訳が分からなくなってしまった。

前提条件

  • windows11
  • Python3.10.10
  • 仮想環境はpyenv + venvで作成

# 環境作成
pyenv local 3.10.10
python -m venv .venv
.venv/Scripts/activate
python -V
pip install --upgrade pip
python -m pip install --upgrade pip
#torchのインストール
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

# ctranslate2インストール
pip install ctranslate2
pip install sentencepiece transformers
pip install protobuf
# 変換
ct2-transformers-converter --model rinna/japanese-gpt-neox-3.6b-instruction-ppo --quantization bfloat16 --force --output_dir rinna-ppo-bf16

変換は、bfloat16にしてみた。この状態で動かしても6G程度。変換で使用したメインメモリは20G程度だったかな?(うろ覚え)応答も十分早く、遅延は気にならなかった。

最終的に動かしたコードは以下の通り。

import ctranslate2
import transformers
import torch
import os

os.environ["CUDA_VISIBLE_DEVICES"] = "0" #GPUを使用する場合はコメントアウトを外す
model='rinna-ppo-int8' #directory of the model

ppo = "rinna/japanese-gpt-neox-3.6b-instruction-ppo"
generator = ctranslate2.Generator(model, device="auto")
tokenizer = transformers.AutoTokenizer.from_pretrained(ppo, use_fast=False)


# プロンプトを作成する
def prompt(msg):
    p = [
        {"speaker": "ユーザー", "text": msg},
    ]
    p = [f"{uttr['speaker']}: {uttr['text']}" for uttr in p]
    p = "<NL>".join(p)
    p = p + "<NL>" + "システム: "
    # print(p)
    return p

# 返信を作成する
def reply(msg):
    p = prompt(msg)
    tokens = tokenizer.convert_ids_to_tokens(
        tokenizer.encode(
            p,
            add_special_tokens=False,
        )
    )

    results = generator.generate_batch(
        [tokens],
        max_length=256,
        sampling_topk=10,
        sampling_temperature=0.9,
        include_prompt_in_result=False,
    )

    text = tokenizer.decode(results[0].sequences_ids[0])
    print("システム(ppo-ct2): " + text + "\n")
    return text


if __name__ == "__main__":
    # import readline
    while True:
        msg = input("ユーザー: ")
        reply(msg)

次にint8でも実行してみた。VRAMは4Gほどか?応答速度は、これも気にならなかった。応答精度も高い。

Japanese StableLM Alpha 7B チャレンジ中

先日公開された「apanese StableLM Alpha 7B」をローカルで動かせないかチャレンジ中。

自分の環境はWindows11+VRAM12Gbなので8bit化しないと動かない。公開されている記事の多くはGoogleColabでそのままでは自分の環境では使えない。Windows11での記事も一箇所見つけたのだけど、公開されているサンプルをそのまま動かしていたので、VRAMも潤沢なのだろう。私が詰まっているポイントでは参考できない。

そもそも私はAIの事を勉強したことはない。昨年のAIブームを受けて騒いでいるミーハーだ。でもまぁこれを機会に自分なりの物を作ってみたいと思っている。langflowとやらを使えば何とかなるんじゃ無いかと思っているんだが。

Windows11ローカルが駄目ならWSL2。そっちの方が楽という呟きもちょいちょい見ているので、駄目ならそっちに行こうと思って居る。

もしくはRinna4Bも作例が多いように思って居るのでそっちから手を付け直しても良いのかも。いや、むしろそっちの方が良くないかなぁ。

ちょっと調べて、考えてみる。

ゲーミングチェア買い換え

これまで使ってたコルセアのゲーミングチェアが壊れた。しばらく前に機械油の匂いがするんだがなんだろう。と思ってたら椅子の高さが下がるようになってしまった。

昨日、とうとう駄目になった。一回高さを上げても10分も経つと戻ってしまう。しゃーないので買うことにした。

コルセアのを買うときに市内のお店巡ったんだけど、かなり苦労したので宮崎市のアプライドに言うことにした。

行って置いてあった椅子に座ってみておおよそ決めたところで店員さんを呼ぶ。聞いてみるとほとんど在庫が無い。候補の一つに在庫があったので買うことに決めた。カラーバリエーションが赤しか無くてちょっともにょったが、まぁいいか。

買ったのはMSIのゲーミングチェア。おおよそ3万円くらいの奴。

お絵かき再開

10日くらいからお絵かきを再開してみた。

折角液タブ持っているし、クリスタもあるし、AdobeCreativeCloudも払ってるし、何かしないと勿体ないだろうと。それにちょっとやってみたいことも有り、そのためには多少なりともレベルアップが必要なのだ。

仕事しながらSNSの時間をガッツリ削って絵に時間を配分している。昨今のTwitterは運営のアレさ、政治関連話題での荒れ具合などでちょっと刺激が強すぎる。脳みそのスタミナをゴリゴリ削られている感じだ。それなら絵に費やした方が余程マシだ。

敢えて情報を入れないというのもずいぶん良いものだと思う。

さて、肝心の絵は輪郭などはまだ手癖が残っていたけど、デッサン面もさることながら、塗りがあっと言う的に駄目と判明。そこをどうにかすべく色塗りの練習中だ。何冊かの本を参考に塗りのイロハを学んでいる。

今のところ、描く度にレベルアップしている気がするので天狗になりつつ頑張りたい。

langChain勉強開始

ChatGPTをAPIを通じて操作するとき、自力で実装するのが難しい・手間が掛かる時に使うライブラリがlangChain。(という理解)

占いアプリ、Misskeyでのボットなんかをやってみたいので勉強することにした。

新しいことをやっておかないとどうしても鈍ってしまうし、一応プログラムを教える講師としては新しい物を追っていないのは恥ずかしい。

コアを作ってしまえば、ガワはある程度どうにかなるはず、と目論んでる。どうなりますかな。

サプリ効果有り

6月30日からサプリを飲み始めた。

約一週間経った。疲れも抜けやすくなった。相変わらず中途覚醒が厳しく眠さはあったりするが。

座っていると蒸れる尻や太もものかぶれが酷く、寝るときにはクリームを塗っていたのだが、それも楽になってきている。

もっと早く呑むようにすれば良かったなぁ。

最近、疲れが取れぬ。夕方気分悪い。

ここんとこ、全然疲れが取れない。

夕方になると気分が悪く、夕飯摂らずに寝る事もある。頻度が高まってる気がする。

そうして、何を変えたかと考えてみれば、サプリ飲まなくなったな、と。収入が落ちる事が分かってたので、2ヶ月で4000円くらいになるサプリ勿体ないってなった。

思い付くのとしては、それかなぁ。
運動はむしろ増えてるし、栄養も特に悪くなってないから。
加齢による回復力の低下の線も有るけど、それはとりあえず最後の手段(?)として。

今日は仕事終わったらサプリ買ってみて様子を見て見ようと思う。

faster-whisperを使って口述筆記に挑戦

OpenAI社のAIの話を追っかけでして、Whisperの存在を知り、口述筆記をやってみたいと思って居た。

そしたら先日、Whisperより早く、GPUも食わないfaster-whisperというモジュールの存在を知った。

一昨日、以下のサイトからサンプルプログラムを頂き、動かしてみた。結果は良好。

[ローカル環境] faster-whisperを利用してリアルタイム文字起こしに挑戦

しかし残念な事にこのプログラムは話したものをテキストに落とす部分が無い。あと、終了させるときにエラーが出ちゃう。そこをちょいとだけ改造してみた。昨夜何度か試したが、問題は無い模様。次はGUIにしたり、ChatGPTと連携させたりとかかな?

黒歴史、作ります。後ChatGPTすごい。

今年のGWはプログラム作成強化週間となりました。

先月末から別アカウントの方で使うソフトを作成し、今日リリース。小っさいプログラムなので今後アップデートは余り無い予定。GUIがダサいので多少作り直すかもしれないけど。

で、GWの残り何をするか。

今回プログラムをChatGPT4と作って思ったんだけども。ChatGPT4との協力は良いね。何が良いかって言うと、作業に対する心理的な敷居がだいぶ低くなる。

引っかかったらとりあえず聞く。何らかの答えが出る。自分で調べるなりもう一回聞くなりして精度を高める。一人で作ってると煮詰まりがち。そして段々面倒くさくなって止まる。やりたい事が見つかっても、とっかかりが見つからなくて止まってしまう。そういう事がかなり減る。これは私のようなやる気無し勢からするとデカい。

まぁただ、普段のスピードと違ってウェイトがあまり掛からないので、疲れちゃうのが玉に瑕、か?

で、そこで思ったんですわ。そーいえば、敷居が高くなって止まったモノがあったなと。

小説です。以前、書いてた小説、カクヨムに載せてたんだけど1話書くのに5時間は掛かってた。それでも中断したり何たりしながらも一年半くらいは頑張ったのかな。でもそこで止まってしまった。やっぱり1話に時間が掛かりすぎる。書くことに対して気が重くなってしまった。

そこでChatGPTですよ。アイディア出しとか執筆そのものなんかをフォローしてくれると嬉しい。全自動というのはよく見かけるけど、協力態勢はあまり見かけない。そして短編では無くて長編の手伝いをしてほしい。

ChatGPTの記憶に関してはトークン毎の料金の問題もあり、あまり使える手段では無い。なので、全編を通してのアドバイスとかはちょっと難しい。スポットで表現を見て貰うとかそんな感じになるのかな?

となれば、一番にやって貰いたいのは口述筆記。大まかにやってくれれば良い。後は手動で直したりChatGPTに投げたり出来ればそれで。下ごしらえをしてくれるだけで大幅に時短になるし、モチベーション維持にも役立つはず。

幸い、OpenAIのソフトにはWhisperというものがある。ネットで見かけるのはこれのAPIを使ってのSpeech to Text(or chat)な訳なのだが、せっかくRTX3080(12Gver)を持っているのでローカルで動かしたい。これを使って喋った内容を一端テキストに変換する。これを第1段階とする。

変換が出来るようになったら、それを適当なテキストボックスか何かに入れて雑に編集。質問点なんかを添えてChatGPTに質問。戻ってきたモノを見ながら修正。さらに再質問、みたいなサイクルが出来ると良いなと。

まぁ雑に考えているだけなので、やっていくうちに変わる部分も多々有ると思うのだけど、とりあえずはこんな感じ。

とっくに出来上がってたカニ水槽

2月から取り掛かっていたカニ水槽。仕事が詰まっててなかなかまとまった時間を取れなかった。水槽の変更は、一度始めたら止められない。ある程度時間は読めるが、どうしても時間は掛かる。だから一日まとめて使える日を伺っていた。

色々有って最終的には3月の11日(土)にほぼ一日掛けて旧水槽から新水槽へと移行した。

現在環境もボチボチ落ち着いてきた。水質も多分問題ない。後は経過を見ながら対応していきたい。

しかし。隠れ場所を沢山作ったので、子ガニは更に見つけづらくなった。そして更に先日、全面に砂ゴケを植えたのでもはやジャングルである。