AI agentプログラム Phidata

今朝、Youtubeで動画をたまたま見た。昨日辺りから話題に上ってるみたいだ。

過去の動画を見ると、三ヶ月くらい前に1回波があったらしい。

マルチエージェントが割と簡単に作成出来るようだ。ドキュメントも良いのかな?チュートリアルも分かりやすそうだったのでちょっと試して見ようかと思っている。一応フォークもしてみた。ローカルで役に立つかは不明。日本語は不利。LLM-JPとかCalm3とかだと違うのだろうかなぁ。30B位でロードメモリが15Gくらいのがいいなぁ。

メモリの多い安いGPUほしい。

オーバースペックなので

新しいサーバなんだけども。

今使ってるのはWordpressだけ。要はApacheとMariaDBだけ。これは勿体ない。VPSサーバは結構良いのを借りている。メモリ4Gに仮想コア4つ。SSDも400G。もったいなさ過ぎる。

なので、適当なVPNサーバを突っ込んで拠点にできんかなと思ってる。

メールサーバも構築失敗したくせに何を言ってんだと思わなくも無いが。挑戦は大事なので。

さて、どうなることやらな。

サイトデザイン

サーバも古いが、サイトデザインもかなり古い。

テーマの配布・更新は何年も前に止まってる。レスポンシブ対応も不完全。

2カラムで、個尾体ページのタブは好きなので維持したいのだが、タブ付きは厳しいかもしれんな。

なるべく素のテーマに近い物にして更新に強くしたい。公式のデザインは今一すかんのでなんか無料の奴を探すことになるかなぁ。

サーバの切り替えについて

現在のサーバはCentOS7。だいぶ古くなってきた。

サーバ作成に慣れていない頃で、設定の仕方もこなれていない。最近はGmailを使ったメール送信で、サーバとの接続拒否されていて、難儀である。

スペックも現在のサーバはオーバースペックだ。ほんとはもうちょっと色々とサービスを作成したかったのだが、結局用途別にサーバを作成することにしたためだ。

学校の授業で使うRockyLinuxにするか、今後の伸びを考えてUbuntuにするか。悩ましいところ。

Dockerも使ってみたい。

PythonでのWebアプリ公開もしてみたい。

何にせよさくらインターネットでのサポートもそろそろ切れるんじゃ無かったっけ?(ソース脳内)

年末年始、パソコンが壊れ、分裂した話

パソコン環境が大きく切り替わった話。

昨年末12月末、メインマシンをデュアルブートにしようと思ったのが運の尽きであった。

Windowsマシンの切り分けとUbuntuインストールまでは上手く行ったのだが、NVMEの認識が出来ず起動できない。
ネットを調べChatGPTに聞きながら色々と試すが、状況は悪くなるばかり。
結局12/31早朝、マザーボードが壊れてしまった。
それから、串刺し未遂事件が起こったのだが、パソコンが動かないと仕事が出来ない。
宮崎のパソコン工房にマザボなどを買いに行こうとするが、実家の家族に反対される。結局鎌倉から戻ってた弟に送り届けて貰う事になった。

CPUとマザボをIntel系に切り替えるが、状況変わらず。
最終的にKernelに関してまで調査して、ようやく原因が分かる。私がメインで使っていたSSDのGenが進みすぎててKernel対応してなかったのだ。
色々見てみるとKernelを自力でコンパイルすれば行けるようなことも書いてあるが、私がそれを実行しても後の保守が出来ない。
泣く泣くメインのSSDを外す。そうすると、今度はグラボの2枚差しも上手く行かない。これも結局1枚刺しに戻すことになった。

何だかんだで動くようになったのは6日。仕事が始まる直前。しかし、その間にWindows環境も死んでしまいノートでしか仕事が出来ない。Officeの授業などがあるからUbuntuだけでは仕事が完結しないのである。

9日、残ったグラボやSSD、以前使っていた電源などにマザボとCPUを買い足してWindows機が出来上がった。
OSや環境は、AcronisのUniversalRestoreツールで問題なく復元できた。しかし、ほんとにこれすごいな。助かってます。

それからubuntuは23.10から22.04になり、CUDAなどを入れ直している最中である。テスト期間が近く、余り余裕がないのだ。

フロントをWindows、バックをUbuntuにして独自アプリなんかも作りやすくなった。金は飛んだし時間も吹っ飛んだが、塞翁が馬になるとよいな。

まぁしかし、VPSと実機ではまるで違う。もちろんWindowsとUbuntuも。これまでより高度なことが出来るようになった分、面倒な事も増えた。
イい年(52)になってからの学習はキツイが、まぁ頑張ろう。

Windows機

部品名 製品名 購入日
CPU Intel Core i5-13400F 2024/1/9
CPUファン レファレンス 2024/1/9
マザーボード PRIME B760M-K D4-CSM パソコン工房限定モデル 2024/1/9
メモリ TED432G3200C22DC01 [DDR4 PC4-25600 ] 2024/1/9
グラボ GG-RTX3060-E12GB/OC/DF 2023/8/24
SSD G-Storategy  NV47004TBY3G1 2023/9/1
HDD ST4000DM004-2CV104 2017/11/11
ガワ zalman t3 plus 2024/1/9

Ubuntu機

部品名 製品名 購入日
CPU Intel Core i5 13400F 2023/12/31
CPUファン レファレンス 2023/12/31
マザーボード MSI PRO B760-P WIFI DDR4 2023/12/31
メモリ v-color Hynix IC DDR4 4266MHz 64GB 2022/11/30
グラボ MSI GeForce RTX 3080 VENTUS 3X PLUS 12G OC LHR 2022/11/9
SSD intel ssdpeknw020t9(Intel SSD 665p 2T) 2020/10/4
HDD ST4000DM004-2CV104 2017/11/11
電源 玄人志向 KRPW-GR1000W/90+ 2023/8/24
ガワ Antec P10 FLUX 2021/6/23
ディスプレイ Acer VG240YUbmiipfx 2022/4/17
液タブ XP-Pen Artist 24 2022/3/11
VRHMD Pimax 5KSuper 2021/11/23

色々なパソコン部品の変更

8/24にローカルLLMの大きなサイズを動かすためにグラボ(RTX3060-12G)を追加した。それに併せて電源を750Wから1000Wに変更。

8/31にDドライブのSSDが呼称したために9/1にSSDの4Tを購入。
Cドライブが2T→4T。Dドライブが1T→2Tへ。旧CドライブがDドライブへ、Cドライブは新規購入部品に変更。

SSDはBIOSがおかしかったのか、リストアで何かおかしな事をしたのか、リストア後にCドライブが起動せず苦労した。物は9/2朝に届いたのだが、復旧完了したのは9/3夕方であった。

現在の構成は以下の通り。

部品名 製品名 購入日
CPU AMD Ryzen 5 5600X 2021/6/23
CPUファン 虎徹Ⅱ 2021/6/23
マザーボード ASUS TUF GAMING B550-PLUS 2021/6/23
メモリ v-color Hynix IC DDR4 4266MHz 64GB 2022/11/30
グラボ MSI GeForce RTX 3080 VENTUS 3X PLUS 12G OC LHR 2022/11/9
グラボ GG-RTX3060-E12GB/OC/DF 2023/8/24
SSD G-Storategy  NV47004TBY3G1 2023/9/1
SSD intel ssdpeknw020t9(Intel SSD 665p 2T) 2020/10/4
HDD ST4000DM004-2CV104 2017/11/11
HDD ST4000DM004-2CV104 2017/11/11
電源 玄人志向 KRPW-GR1000W/90+ 2023/8/24
ガワ Antec P10 FLUX 2021/6/23
DVD-RAM LITEON? 不明
ディスプレイ Acer VG240YUbmiipfx 2022/4/17
液タブ XP-Pen Artist 24 2022/3/11
VRHMD Pimax 5KSuper 2021/11/23

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も作例が多いように思って居るのでそっちから手を付け直しても良いのかも。いや、むしろそっちの方が良くないかなぁ。

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

langChain勉強開始

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

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

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

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