VSCodeからローカルDeepSeek R1のDistillモデルを使ってみた
SHIFT ITソリューション部の水谷です。
先週あたりから中国スタートアップ企業が開発した生成AIである "DeepSeek R1" が話題になっていますね。
DeepSeek R1は、学習コストが大幅に低いのに性能は CatGPT o1レベルとされ、コスパがとても高いLLMと言われています。
アカウントを作成すれば無料でチャット機能が使える(API使用は有料)ので、もうすでに試された方も多いのではないでしょうか?
しかし、入力した情報が中国国内のサーバーに保管され、それが別企業にも共有される可能性があることが使用許諾に書かれているため、仕事で使うにはこの点が大きな問題となます。
そこで、本記事では DeepSeek R1 のDistillモデルをローカルPC上で動かすことで情報を外に出さないようにしつつ、VSCodeと連携して使ってみたいと思います。
補足1: 本記事の使用例では、以前作ったAnsibleのコードの改善を試してみますが、もちろんほかの言語で書かれたコードやプロジェクトにももちろん使用できます。
補足2: 今回はGPUに VRAMを12GB搭載したNVIDIAの GeForce RTX 3060を使用しました。GPUの性能によって使用できるモデル、推論にかかる時間は大きく変わります。
LM Studioのインストールと設定
ローカルPC上でLLMを動かすのによく使われている定番ツールとして、LM Studio があります。
無料で使え、とても使い勝手の良く、しかもAPIを提供する機能も持っているツールですので、今回はこれを使用することにします。
LM Studioをインストールは、パッケージをダウンロードして実行するだけですので省略しますが、LM Studioが起動出来たら、さっそくDeekSeek R1のモデルをダウンロードします。
LM Studioの左にある "Discover"(虫眼鏡のアイコン)をクリックし、"DeepSeek"で検索すると……、このように Distill モデルが出てきますね。
2025/1/29 時点ではDeekSeek R1 Distill (Qwen 7B)と、DeepSeek R1 Distill (Llama 8B)が見つかるのですが、今回は Llama の方を使ってみます。私は詳しくないのですが、これはMeta社が開発したオープンソースのLLMモデルであるLlama3 8Bに、DeepSeek R1で生成された推論データを追加学習させた(?)ものということになるでしょうか。
このモデルのパラメーター数は(Llama 8Bなので)8Billion(=80億)ですね。元々のDeepSeek R1はパラメーター数が671Bなので、それに比べたらかなり小さいですが、ローカルPCの1台のGPUで推論させるなら、この程度が良いところでしょう。
難しいことはさて置いて、とりあえず動作確認としてチャットを行ってみます。
左上のチャットアイコンをクリックし、モデルを選択します。
モデルの設定画面が表示されますが、一旦デフォルトで進めます。
で、チャット欄に「Ansibleはどんなツールですか?」と入れてみると……。
回答が返ってきましたが、英語ですね。。。
「日本語で書いてください。」とお願いすると、日本語になりました。
やや言語の面で不安はありますが、回答内容は悪くないし、何よりDeepSeek R1のモデルが動いていることは確認できたので次に進みます。
補足: 2025/1/30の時点ではDeepSeek-R1-Distill-Qwenに日本語の追加学習を行ったモデルも複数公開されていました。これらを使うと、「日本語で書いてください」と書かなくても日本語で表示されました。
DeepSeek R1 DistillをVSCodeから使えるように設定するため、左の上から2番目「Developer」アイコンをクリックします。
ちょっとわかりにくいですが、左上の方に「Status Stopped」と表示されていて、今は外にAPIを提供していない状態のようです。
その「Status Stopped」と書かれているところをクリックすると「Status Running」に変わり、「http://192.168.1.2:1234 」で接続できるよ、と出ています。
とりあえず、これで LM Studio 側の設定は完了です。
VSCodeの設定
VSCodeから使う、と言ってもいろいろやり方はあるのかなと思いますが、今回は Cline エクステンションの1つ、"Roo Code" を使ってみます(選定理由は、使ったことがないので試したかったからw)。
VSCodeのExtensionsで "Roo Code" を検索してインストールします。
すると、VSCodeの左端にロケットのようなアイコンが追加されるので、これをクリックします。
いきなりプロンプトが入力できる状態になっていますが、先に設定が必要です。
"Auto-approve" と表示されているところをクリックすると、Roo Code許可なくできることを指定できます。
ここでは、ファイルやディレクトリへのアクセス、ファイルの編集、それからブラウザの使用を許可しました。
続いて、Roo Codeのペインの右上にある歯車アイコンをクリックして、さらに設定を進めます。
ここにはたくさんの設定項目があるのですが、難しい設定はデフォルトのままにし、どのAIを使うかについて指定します。
"API Provider" に "LM Studio" を選択し、先ほどの LM Studio に表示されていたURLを指定します。
この時 LM Studio に複数のモデルが登録(ダウンロード)されている場合は、そのリストが表示されるので、使いたいモデルを選択します。
タスクを実行してみる
では、試してみましょう。
適当なプロジェクトディレクトリを開いておき、おもむろに以下のように書いてみます。
最初の "@/" は、このプロジェクトのトップディレクトリ以下すべてのファイルをAIに見せる、という意味になります。実行してみると……。
と、エラーが出てしまいました。
エラーメッセージから context length をもっと大きくする必要があるようです。
ということで、LM Studio に戻って、デフォルト4096の context length を適当に約3倍の12000にしてみます。
で、もう一度タスクを実行してみると……。
英語ですが、何か出てきました。
内容を読んでみると、どうやらこのプロジェクトがAnsibleのプロジェクトであることを理解しておらず、(YAML)形式の設定ファイルが多く存在しすぎていて、設定の競合が起きる危険がある、などと出てました。
そこで、「/@ このプロジェクトにあるYAMLファイルはすべてAnsibleのファイルです。このAnsibleプロジェクトの問題点を指摘してください。」としてみます。
すると、Ansibleプロジェクトとしての問題点が表示されるようになりました。
そして、そのまま見ていると、急に日本語になり、以下のようなそれっぽい指摘がでてきました。
「確かに!」と思う項目もあるものの、「バリューブレックの明示」ってなんなんだろ? となったり、いろいろですね。
続いて、コードの追加を少し試してみましょう。
タスクの種類を "Ask" から "Code" に切り替えて、「@/prepare.yml このファイルの最後に httpd をインストールするタスクを追加してください。なお、モジュールは ansible.builtin.dnf を使ってください。」としました。
しばらくすると……。
期待通りのタスクが追加されました(右下の黄色い部分)。
しかも、表示された英文を読んでみると、「私はAnsibleではaptモジュールやdnfでパッケージがインストールできることを知っている。このファイルはすでにansible.buitlin.aptモジュールを使っているけど、dnfモジュールを使うという指示がある。おそらくaptモジュールを使うべきだと思うが、(指示通り)dnfにスイッチしよう。」とか独り言のように言っているのが面白い(混乱させてごめん > roo)。
で、「Save」を押せばタスクが追加されたファイルが保存され、「Reject」を押せば破棄されるようです。 なかなか便利ですね。
もう少し複雑でコマンド実行を伴うタスクも試してみたのですが、コマンドの引数を間違えたりして、思うように進みませんでした。このあたりは、(Rooが持っている)プロンプトが良くないのか、Ansible関連のコマンドはあまり学習していないのか、理由はよくわかりません。もう少し使い込んでみる必要がありそうです。
最後に
まだ「少し触ってみた」程度ですが、意外なほどすんなり DeepSeek R1 の Distill モデルを動かせました。
クオリティについては、私には他のモデルと比較する知識がないのでどれほど良いものなのかはわかりませんが、ローカルのGPUだけを使って無料でこれだけできるだけでもすごいことだな、と感じました。
とは言え、タスクを書いて会話していけば開発がどんどん進んでいく、というような世界にはまだ遠いのかな、とも感じましたが、Ansibleではなくもっとメジャー(?)な言語なら違ったかもしれません。
それにしても、時代はどんどん変わってますね。遅れないようについていかないと。。。
★公式ブロガー水谷の執筆記事一覧
お問合せはお気軽に
https://service.shiftinc.jp/contact/
SHIFTについて(コーポレートサイト)
https://www.shiftinc.jp/
SHIFTのサービスについて(サービスサイト)
https://service.shiftinc.jp/
SHIFTの導入事例
https://service.shiftinc.jp/case/
お役立ち資料はこちら
https://service.shiftinc.jp/resources/
SHIFTの採用情報はこちら
https://recruit.shiftinc.jp/career/
PHOTO:UnsplashのSteve Johnson