memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

ローカルLLMおもろい

集中できるので図書館で過ごしています。

たまたま何かで「ローカルLLM」というワードを見かけて1つ遊んでみようとやってみた記録です。新しいことは何もありません。個人体験の共有です。

モデルを使うといえばHugging Faceかもしれません。画像生成でちょっと遊んだときにモデルをダウンロードして。。。とかやりましたが、何をやっているのかよくわからずとりあえず手順を見様見真似という感じでした。

イマドキはそういうツールもあるようで。10個くらい候補がありましたが、一番カンタンそうなLM Studioっていうのをダウンロードして使ってみました。

lmstudio.ai

操作に迷うことはほとんどなく、VS Codeのように左端にメニューアイコンがあるのでその中の虫眼鏡っぽいのがモデルのダウンロードになるようです。VS Codeの拡張機能の選択メニューみたいですね。

ここからモデルをダウンロードしてロードするとChatが使えるようになります。「日本の首都は?」とか計算問題を投げてみて遅いけど動くわ、という感じでした。

今、MBP M4を使っているのですが(M1 MBAからの乗り換え)、メモリが足りないというだけで変更しました。動画編集もしませんし特に計算もしません。ただ「重いマシンだな」くらいでした。あ、たまにHandBreakで動画変換はするかな。。。という感じです。それでも劇的に早いという感じはなかったです。で、このモデルを動かすときには少しはM4の力が活かせるかな。。。と思ったくらいです。グラボ積んだWindowsマシンにはかなわないと思いますが。

余談はさておき。

せっかくローカルでLLMが使えるならCursorみたいなことをローカルだけ実現できたらいいなと思いました。調べるとそういう情報がありました。ありがたいです。

note.com

もうローカルLLMが話題になったのはもう1年以上前の話みたいなので上記ではわからないことが1つありました。それを書いておきます。

LM Studioでサーバーを起動する

LM Studioで読み込んだモデルをもとにサーバーを起動する必要があるはずなんですが、LM Stduioのメニューを探してみると「サーバー起動」とか見つからなかったんですね。。。ネットを探索してやっとわかりました。こういうときにLLMを使うべきなんでしょうね。古い人間なので検索に頼ってしまいます。。。(※最近、わからないときにGoogleに頼るやつは旧タイプと呼ばれるのでは?と思っています。LLMに頼るのはニュータイプ)

VS Codeに拡張機能continue.devをインストする

VS Codeに拡張機能としてcontinue.devをインストールします。インストールが終わったあとの話です。拡張機能continueの画面でモデル選択(赤矢印)を押します。

拡張機能を使う

そして、以下の画面で、LM StudioとAuto Detectを選択します。

で、このあとです。わからなかったのは。赤矢印の先の緑色のアイコンを押します。これがサーバーモード?のUIになるようです。

ちなみにこのアイコンはLM StudioをPower UserかDevelperにしないと出てきませんので要注意です。LM Studioの画面の最下段に以下のようなインジケータがありますのでそこで切り替えられます。

この画面に切り替えたあと、青矢印のトグルをオンにするとサーバーが起動するようです。サーバーを起動したあとであれば、VS Code側でチャットがローカルLLMを認識して動作するようです。

Macで通信速度を落とす簡易的な方法

これでおしまいなんですが。実はLM Stduioでモデルをダウンロードするときに、図書館のWifiを使用していたので数GBのデータを一気にダウンロードするのは気がひけました。とはいえモバイルWifiでは容量制限に影響するので。。。通信速度を制限しながら長い時間をかけてDLできないかしら?と調べてみました。Macです。以下にいい情報がありました。

mlabo.org

インストールはXcodeのツールを追加インストールする形です。システム環境設定のメニューに「Network Link Conditioner」が表示されるので、トグルをオンにすれば選択中の(例えば、Wifi)の通信が制限されます。

効果としては、制限がなければ12MB/sくらいでしたが、制限すると2MB/sくらいに抑えられました。これが効果があるかわかりませんが、あまり迷惑がかからないかな。。。と思います(家でやれよって言われますね。。。すいません)。

とりあえず。

使ってみた感想。動く、いや動いた。ちょっと待ち時間はあるけどちゃんと自然言語に反応してタスクしてくれる。

ただ、ネットがない環境がないので実際に利用することを考えるとクラウドのLLMを使う方がいいなと思います。

ローカルLLMの良さはやはりクローズなところかと思います。その利点が必要なシーンというのは身の回りでは思いつかないのでギミック的にオモシロイな、くらいの素人感想なのでした。

最後に雑談。

最近読んだ記事で(あ、そうだこれだった)「AIの対象とするにはUIとかいらないじゃん」という話を見かけた。

昔、MacはUIが素敵だったので流行った。UIが自然言語に置き換わるとすれば。。。使いやすいUIデザインってある面では考えなくてよいのかもしれない。。。車のダッシュボードのタッチパネルが使いにくい問題(物理ボタンがないから)も自然言語に置き換わるとその問題も少なくできるはず。

色々な機器のUIをLLMが対応するようになると、基本ソフトウェアとしてLLMが組み込まれる時代はあるのだと思うし、そんなときにローカルLLMは大事なんだろうと思う。

1つ難しさを感じるのは同じプロンプトに対して回答に揺れがあること。シードが同じなら同じ回答を出力できるのだろうか?であればいいのだが。回答が確率的に変動するとなると取扱説明書的なものは作りにくい(授業も同じ)なぁと想像しています。

以上。