ChatGPTをAPIを通じて操作するとき、自力で実装するのが難しい・手間が掛かる時に使うライブラリがlangChain。(という理解)
占いアプリ、Misskeyでのボットなんかをやってみたいので勉強することにした。
新しいことをやっておかないとどうしても鈍ってしまうし、一応プログラムを教える講師としては新しい物を追っていないのは恥ずかしい。
コアを作ってしまえば、ガワはある程度どうにかなるはず、と目論んでる。どうなりますかな。
ChatGPTをAPIを通じて操作するとき、自力で実装するのが難しい・手間が掛かる時に使うライブラリがlangChain。(という理解)
占いアプリ、Misskeyでのボットなんかをやってみたいので勉強することにした。
新しいことをやっておかないとどうしても鈍ってしまうし、一応プログラムを教える講師としては新しい物を追っていないのは恥ずかしい。
コアを作ってしまえば、ガワはある程度どうにかなるはず、と目論んでる。どうなりますかな。
OpenAI社のAIの話を追っかけでして、Whisperの存在を知り、口述筆記をやってみたいと思って居た。
そしたら先日、Whisperより早く、GPUも食わないfaster-whisperというモジュールの存在を知った。
一昨日、以下のサイトからサンプルプログラムを頂き、動かしてみた。結果は良好。
「[ローカル環境] faster-whisperを利用してリアルタイム文字起こしに挑戦」
しかし残念な事にこのプログラムは話したものをテキストに落とす部分が無い。あと、終了させるときにエラーが出ちゃう。そこをちょいとだけ改造してみた。昨夜何度か試したが、問題は無い模様。次はGUIにしたり、ChatGPTと連携させたりとかかな?



今年のGWはプログラム作成強化週間となりました。
先月末から別アカウントの方で使うソフトを作成し、今日リリース。小っさいプログラムなので今後アップデートは余り無い予定。GUIがダサいので多少作り直すかもしれないけど。
で、GWの残り何をするか。
今回プログラムをChatGPT4と作って思ったんだけども。ChatGPT4との協力は良いね。何が良いかって言うと、作業に対する心理的な敷居がだいぶ低くなる。
引っかかったらとりあえず聞く。何らかの答えが出る。自分で調べるなりもう一回聞くなりして精度を高める。一人で作ってると煮詰まりがち。そして段々面倒くさくなって止まる。やりたい事が見つかっても、とっかかりが見つからなくて止まってしまう。そういう事がかなり減る。これは私のようなやる気無し勢からするとデカい。
まぁただ、普段のスピードと違ってウェイトがあまり掛からないので、疲れちゃうのが玉に瑕、か?
で、そこで思ったんですわ。そーいえば、敷居が高くなって止まったモノがあったなと。
小説です。以前、書いてた小説、カクヨムに載せてたんだけど1話書くのに5時間は掛かってた。それでも中断したり何たりしながらも一年半くらいは頑張ったのかな。でもそこで止まってしまった。やっぱり1話に時間が掛かりすぎる。書くことに対して気が重くなってしまった。
そこでChatGPTですよ。アイディア出しとか執筆そのものなんかをフォローしてくれると嬉しい。全自動というのはよく見かけるけど、協力態勢はあまり見かけない。そして短編では無くて長編の手伝いをしてほしい。
ChatGPTの記憶に関してはトークン毎の料金の問題もあり、あまり使える手段では無い。なので、全編を通してのアドバイスとかはちょっと難しい。スポットで表現を見て貰うとかそんな感じになるのかな?
となれば、一番にやって貰いたいのは口述筆記。大まかにやってくれれば良い。後は手動で直したりChatGPTに投げたり出来ればそれで。下ごしらえをしてくれるだけで大幅に時短になるし、モチベーション維持にも役立つはず。
幸い、OpenAIのソフトにはWhisperというものがある。ネットで見かけるのはこれのAPIを使ってのSpeech to Text(or chat)な訳なのだが、せっかくRTX3080(12Gver)を持っているのでローカルで動かしたい。これを使って喋った内容を一端テキストに変換する。これを第1段階とする。
変換が出来るようになったら、それを適当なテキストボックスか何かに入れて雑に編集。質問点なんかを添えてChatGPTに質問。戻ってきたモノを見ながら修正。さらに再質問、みたいなサイクルが出来ると良いなと。
まぁ雑に考えているだけなので、やっていくうちに変わる部分も多々有ると思うのだけど、とりあえずはこんな感じ。
今日はとりあえず暇になる予定だったので、PythonのFlaskのお勉強で遊ぼうと思ったんだがなかなか上手く行かず。
なんか色々と細かな用事的なものが発生したり、開発環境の不備を修正したり。
気がつけば一日空いてたはずなのに午後7時で3時間くらいしか遊べてない。5時に起きたのに。ぐぬぬ。
書くのを忘れてたので、防備録。GUIを見ずに描いてるので数字は適当。
年末年始でPOINT-Eをイジってみた。GUI部分をイジってGRID部を150くらいからMAX2500くらいに書き換える。さすがに2500だと遅すぎたので、1200くらいにして実行。まぁそれでもすごく遅かったが。でも500じゃクォリティ足りないのよね。
結局、うちのRTX3080では1200くらいでも実用には遠かった。恐らく、今回のこれは「こういう技術出来たんでよろしく」的なものだったんだろう。家庭用3Dプリンターで出力するにも足りない生成物しか出来なかった。
半年とか1年後とかにそこそこ遊べる物が出てくるんだろうなぁ。
先日、OpenAIからリリースされたPOINT-E。様々な技術系ニュースサイトでも紹介された。
文字から3Dモデルを生成するAI「Point-E」
折角良いグラボがあるのだからとインストールを試みる。GUIで出来ないかと探したところ、こちらの「【テキストから3Dモデル生成】Point-E GUIツールのインストール (ジコログ)」記事を参考に頑張ってみた。
頑張ってみたものの、できあがりのクォリティは良くない。幾らか設定を触ってみるが駄目。Colaboratoryで動かすやり方も有るので、それをローカルで動くようにしてみようと思う。




先週金曜から思い立ってサーバ建て始めた。VPS取って独自ドメインついてるサーバが二つほど余ってた(?)のでそれを活用することにした。ドメイン取ってるのにOSもインストしてないというタワケ振り。直ぐ建てるつもりだったのだけど、何かと後回しにしているうちに……。
OSはRockylinux9。継続的に使っていくつもりなのでメールサーバも作る。PythonのFlaskというフレームワーク使って何かする予定。
手順を逐一書き出して、来年度の教材にしたい。結構進んできていて、現在330行くらい。Wordに持っていって画像入れるかどうか分からんけど、書式揃えたりしたらえらいページ数になりそう。
グラボの買い換えは11月9日。現在11月30日なのでちょっと前になる。
stable-diffusionつーかWifu-Diffusionで色々お絵かきしてたのだが、贅沢なことに3060ti-8Gで性能不足を感じてきた。特にメモリ。で、買い換えた。
買ったのは「MSI GeForce RTX 3080 VENTUS 3X PLUS 12G OC LHR」お大尽である。購入時価格はおおよそ15万。アプライドで現物確認して買った。
おかげでお絵かき楽々!と言いたい所なんだが、仕事が溜まりすぎてほぼ使ってない。そのため性能が意識できなくて残念である。余裕が生まれるのはもう少し先っぽいので頑張る。



さて、お次はメモリである。ブラックフライデーに併せてAmazonで買った。
購入したのは「v-color Hynix IC デスクトップPC用 ゲーミングメモリ Skywalker Plus Golden Armis DDR4 4266MHz PC4-34100 64GB」名前がクソ長い。これまでは「CORSAIR DDR4 2*16GB 2666MHz」だったので、容量もクロックもだいぶパワーアップした。
これが届いたのが本日。11月30日である。
現在の構成は以下の通り。我が事ながらすさまじい。
| 部品名 | 製品名 | 購入日 |
| 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 |
| SSD | intel ssdpeknw020t9(Intel SSD 665p 2T) | 2020/10/4 |
| SSD | CT1000MX500SSD1/JP | 2018/1/23 |
| HDD | ST4000DM004-2CV104 | 2017/11/11 |
| HDD | ST4000DM004-2CV104 | 2017/11/11 |
| 電源 | 玄人志向 KRPW-BK750W/85+ | 2021/6/23 |
| ガワ | Antec P10 FLUX | 2021/6/23 |
| DVD-RAM | LITEON? | 不明 |
| ディスプレイ | Acer VG240YUbmiipfx | 2022/4/17 |
| 液タブ | XP-Pen Artist 24 | 2022/3/11 |
今回、インストールする際には、様々なサイトを渡り歩いてインストールをしていった。そのため、後に再インストールする際に何が何だか分からなくなる危険性が大なので、ここにメモを残しておく。
環境は以下の通り
| OS | Windows11 |
| CPU | AMD Ryzen 5 5600X |
| マザーボード | ASUS TUF GAMING B550-PLUS |
| メモリ | CORSAIR DDR4 2*16GB 2666MHz |
| グラボ | 玄人志向 GG-RTX3060Ti-E8GB |
| SSD | intel ssdpeknw020t9(Intel SSD 665p 2T) |
ややこしい事をする羽目になったのは以下の項目による。
VRAMが8G
標準のstable-diffusionではCUIのため上手くtxt2img等を上手く操れなかった
最初GIGAZINEの紹介記事を参考にしようとしたがanaconda利用の為上手く行かなかった
ややこしい事をする羽目になったのは以下の項目による。
CUDAとPyTorchはここ参照
https://zenn.dev/opamp/articles/c5e200c6b75912
gitは自分ではどこかから適当に入れた。一応参考としてはここを上げておく
https://b-risk.jp/blog/2022/03/2022git_install/
それができたらいよいよWebUIインストール。
このページはUbuntuで行ってるが、Windowsでもやる事は一緒
https://mirai-tec.hatenablog.com/
以上、これらを参考にして手順作成した
「AUTOMATIC1111版Stable Diffusion web UI」
Anacondaで仮想環境構築
「AUTOMATIC1111版Stable Diffusion web UI」
Anacondaで仮想環境構築
@conda init
call conda activate stable-diffusion
cd c:\users\xxxx\anaconda3 (xxxxはユーザー名)
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
cd c:\stable-diffusion-webui
pip install -r requirements.txt
「Stable Diffusion」の学習済みモデルをHugging Faceにアクセスしてダウンロードする
https://huggingface.co/CompVis/stable-diffusion-v-1-4-original
ダウンロードしたsd-v1-4.ckptをmodel.ckptとリネームしてstable-diffusion-webuiに移す
「GFGAN」の学習済みモデルをダウンロードする
https://github.com/TencentARC/GFPGAN/releases/download/v1.3.0/GFPGANv1.3.pth
ダウンロードしたGFPGANv1.3.pthをstable-diffusion-webuiに置く
「trinart_stable_diffusion_v2」をダウンロードする
「waifu-diffusion」と同じく二次元に特化した、とりんさまAIボットのモデルの改良版
学習ステップ数によってモデルが違う
https://huggingface.co/naclbit/trinart_stable_diffusion_v2
モデルはこの三つ trinart2_step60000.ckpt trinart2_step95000.ckpt trinart2_step115000.ckpt
紹介ページ https://zenn.dev/johnkf/articles/5b0fa5069ea752
実行(私は実行用のbattiを作ってそちらでlaunch.pyを呼び出している)
python launch.py
バージョンアップ
新しい物をgithubから取ってきて上書き。その後自作している起動用batファイル(後述)を起動するだけ。
初回、必要な物をDLしてくれるらしい。
今回はanaconda利用につき、標準とはちょっと違うので、
・requirements.txt
・webui-user.bat
・webui.bat
の中身には注意する事
batファイルを作成。ファイル名は何でも良いが分かりやすいところに置く。
私はデスクトップに「StableDiffusion WebUI.bat」と言う名前で置いている。
@rem ver1.00 2022/09/17
@rem 場合によってパス変更
cd C:\stable-diffusion-webui\
@rem set COMMANDLINE_ARGS=--listen --ckpt モデルのファイル名(.ckptファイル)
set COMMANDLINE_ARGS=--listen --ckpt model.ckpt
@rem anaconda アクティブ
call conda activate stable-diffusion
@rem set COMMANDLINE_ARGS=--listen --ckpt モデルのファイル名(.ckptファイル)
@rem list model.ckpt trinart2_step60000.ckpt trinart2_step95000.ckpt trinart2_step115000.ckpt
set COMMANDLINE_ARGS=--listen --ckpt trinart2_step60000.ckpt
start http://127.0.0.1:7860/
@echo -------------127.0.0.1:7860が表示されたらブラウザを更新してください -------------
@START EXPLORER ".\outputs"
@rem gui run
python "launch.py"
@cmd/k
sublimetext3、しばらく前からテンキーのエンターが無反応になり困ってた。
私は割とテンキーの方も使うので、打つリズムが狂ってしまう。
ちょいとWebを調べてみたが、どうもぴったりのものが無い。おそらく当たり前すぎて情報が出てない類。しゃーないのでデフォルトのキーバインドを検索して見る。すると普通のenterキーはこう書いてある。
{ "keys": ["enter"], "command": "insert", "args": {"characters": "\n"} }
なるほどねー。インサートコマンドを呼び出して引数として改行コードをいれる、と。テンキーのエンターは”keypad_enter”だから、と。
{ "keys": ["keypad_enter"],"command": "insert", "args": {"characters": "\n"}}
これを[基本設定]>[キーバインド]で右のウィンドー(ユーザー)の方に突っ込むと。
そーいや、もう4もとっくに出てるんだけど4を買うかどうするか。visual studio codeの方が評判良いのだよな。諸行無常よなー。さてさて。