MacでローカルAI。LM Studioで童話
MacでLLMを動作させるのに色々苦労してきましたが、最近ではもっぱらLM Studio を使っています。(執筆時点のバージョンは 0.2.12)
日本でも東工大と産総研が作ってくれた日本語に特化した巨大モデルSwallowがあります。
なんと13B(130億パラメータ)と70B(700億パラメータ)ですよ!
もちろん素のモデル状態ではデカすぎ & 計算量多すぎでローカルなんかでは動作できないんですがbit数をドカーンと4bitに落としてもだいたいオッケーな感じで動作できるようになりました
偉い方々、ほんとうにありがとうございます
ファイル名にQ4とあるのは4bit、Q5は5bit、Q8は8bitです
元はfp32bitだったりfp64bitだったりするので動作させるのに最低でもnVidia A100(数百万円)が必要でした
ダイエットしたQ4程度ならApple Silicon の Macで楽々動作!
メインメモリーとグラフィックメモリーを完全に共有している(ユニファイドメモリー)強みがでますね
プログラムコードなど正確性がほしい場合はbit数を上げておきましょう
例えばWizardCoder-33BならQ4ではなくQ6あたりを使いたいです
少し前ならQ4まで精度落とすと「いやこれ全然だめじゃん」だったんですが、なんか量子化する際にいい感じのカーブが見つかったようでQ4でも劇的によくなりました。
というかこれ実はQ4で動作するのを発見した偉大な llma.cpp から半年後の話ですよ、進歩が早すぎる
事前準備
https://lmstudio.ai/ から Mac用、Windows用、Linux用などをダウンロードします。
zipを解凍します。以下はMac用として話を進めます
左側の虫眼鏡をクリックして、上部の検索ワードに swallow といれます
一覧がでてくるので GGUF に注目します
私のmacはメモリーが64GByteあるので TheBloke/Swallow-70B-GGUFを選択しましたが、13Bでも十分賢いです
その中で TheBlokeさんがおすすめの Q4 と K_M がついたファイルをダウンロードします
実行
左側の吹き出しマークをクリック
一番上でモデルを選択します
重要。邪魔なダウンロードウインドウを閉めます。これ知らずにチャットできない!と小一時間悩みました
計算条件とAIへ「こう動作してくれ」という基本情報を入れる
右側の GPU Accelaration の Use Apple Metal (GPU)にチェックを入れます
Context Length が2048ですが、Llama2は4096まで受け付けるので4096に書き換えます
システムプロンプトを日本語に置き換えます。(私の謎技)英語用のLlama2でもここを日本語にすると日本語で受け答えしてくれる事が多いです。文言は以下のようにしています。
日本語で回答する。以下はAIの大規模言語モデルとの会話である。このAIは、質問に答えたり、推奨事項を提供したり、意思決定を支援したりする。AIはユーザーの要求に従う。AIは既成概念にとらわれない。
チャットしてみましょう!
童話を書いてもらう
こんな感じで頼んでみました
あなたはプロの小説家です。これから自分で短い童話を書いてほしいです。以下に条件を伝えます
・ジャンルはファンタジーです
・読者の対象は小学生3年生以下です
・好き嫌いで人参が食べられない馬と、牧場の主人のお話
・ファンタジーなので馬と牧場の主人は会話できます
・馬の名前は「アオ」です。牧場の主人の名前は「太郎」
・アオの人間の主人は、馬小屋で馬たちに飼い葉と人参を混ぜた物を出します。
・他の馬は美味しそうに平らげますが、アオは人参が嫌いなのでいつも物足りません
・太郎はアオに人参を食べさせるために色々な手段を考え、ついにアオは好き嫌いを克服して人参入りの飼い葉を食べられるようになる
AIがどのような物語を書いてくれるか楽しみですね
生成例
むかしむかし、あるところに牧場がありました。その牧場で働いていた主人の太郎という男は、動物たちを大切に扱っていました。彼らは皆、健康的な食事を与えられ、愛情を受けていました。しかし、そんな中でも一頭の馬だけが少し違った存在でした。 その馬の名前はアオといいました。彼女はとても美しい青毛で、賢くて優しく、他の馬たちからも慕われていました。しかし、太郎はあることに気づきました。アオは人参が苦手だったのです。他の馬は喜んで飼い葉と一緒に人参を食べますが、アオだけはいつも残してしまいます。
続きはあなたのMacで。
stable diffusionとクレヨンLoRAで生成
めでたしめでたし