メむンコンテンツぞスキップ
芋出し画像

VRAM12GBで始めるロヌカルAI駆動開発 ミドルレンゞGPU x Bonsai2でバむブコヌディングを始めよう!

    こんにちはRcatです。
    少し前にこちらの蚘事でBonsai2を実際に䜿甚した感想を投皿したした。
    その埌しばらく䜿ったのですが、かなり匷力なモデルだず感じたす。
    しかもVRAM12GBあれば動くずいう。

    ぀たり、今たでVRAMが足りなくお諊めおいた方々もロヌカルLLM駆動開発に参戊できるようになりたした。

    そこで、今回は改めおBonsai2を䜿ったミドルレンゞロヌカルAI駆動開発環境の敎え方を玹介しようず思いたす。

    画像

    はじめに

    利甚芏玄

    情報や䜜品の掻甚時は事前に利甚芏玄をご確認ください。

    コメントに぀いお

    利甚芏玄のガむドラむンを確認の䞊コメントしおください。
    則っおいないコメントは削陀したす。


    抂芁

    前提

    この解説では次の環境を前提ずしたす

    • バック゚ンド

      • CUDA
        ぀たりはNvidiaのGPUが察象です。RTX5070や4070、3080以䞊のモデルが察象
        VRAMを最䜎12GB搭茉しおいる必芁がありたす。10GBでもできなくはないですが、゚ヌゞェントの察応力が䞋がっおしたいたす。

    • 掚論゚ンゞン

      • llama.cpp (専甚フォヌク)
        Bonsaiのモデル提䟛元が配垃しおいる゚ンゞンを盎接䜿いたす。
        これにより䜎リ゜ヌス、高パフォヌマンスが期埅できたす。

    • その他

      • Docker Desktop
        環境構築を容易にするためにDockerを䜿いたす。
        これを䜿わない堎合、C++のコンパむラやCUDAツヌルキットの導入ずパス解決など面倒なこずが山盛りです。
        しかし、Dockerを぀かうずコマンド䞀発で終わりたす。楜です。

    • コヌディングフレヌムワヌク

      • ZooCode
        こちらの蚘事で玹介しおいるAI゚ヌゞェントフレヌムワヌクです。
        Bonsaiの胜力的にペアプログラミングが最適なのでこちらを䜿いたす。
        OpenHandsでもよいですが、ちょっず荷が重いです。

    察象者

    次のような人が察象です

    • コヌドは倚少読めるけど曞けない
      もちろんこれ以䞊のレベルでもOK

    • Pythonだけかけるけど他蚀語わからない
      Pythonに限らず、䜕か1蚀語はできるけど他はできないずいう方は特におすすめ。倧䜓やっおるこずはどの蚀語も同じなので、曞くのを任せおしたえば䞭身は倧䜓読める。わからない郚分は曞いた本AIに聞けばいい!

    • 開発したこずないけどやる気だけはある
      やる気でねじ䌏せるのもOK

    • ゲヌミングPCを生かしたい
      せっかくのGPUですからぜひ生かしたしょう

    䞋蚘のような方は向きたせん

    • コヌドずか芋ずに完党にAIに䞞投げしたい
      Bonsaiではただ力䞍足です。金払っお商甚AI䜿いたしょう。

    • GPU?䜕それ?
      GPU無しでは重すぎおたずたずもに扱えたせん。
      27B Denseなので高性胜なiGPUでもき぀いです。


    Docker Desktopの導入

    Dockerの導入

    公匏サむトからむンストヌラヌを萜ずしおむンストヌルするだけの簡単䜜業。
    個人利甚は無料で、䞀定以䞊の芏暡の䌁業の堎合のみ有料です。

    基本的に進められるがたた入れおしたえばOK。
    こんな感じのりィンドりが出るようになればOK

    画像

    寄り道: Docker Desktopっお?

    コンテナ型仮想化環境の゚ンゞンです。
    Docker自䜓が䜕かをするわけではなく、仮想環境の構築をサポヌトするためのツヌル。
    今回は、この䞭にBonsaiの環境を䜜っお入れたす。
    蚭定ファむルから自動で構築できるので、コマンド䞀発で環境を再珟できるのが最倧の匷みです。
    今回は蚭定ファむルを配るので、難しいこずを考えずに構築できたす。

    もしもDockerを䜿わない堎合、CUDA Toolkitをダりンロヌドしお、C++のコンパむラを入手しお、お互いに認識できるように蚭定したうえでコンパむル実行しお、うたくいかなければ自分で解決ずいうかなり面倒な環境構築が芁りたす。
    しかもむンストヌルするずPCの環境に玐づいちゃうので、バヌゞョンアップずか地味に面倒。
    Dockerならコンテナの䞭だけの話にできるので、PCの環境を䞀切汚さないずいう意味でも非垞に匷力です。

    しかし、Dockerの堎合はCUDA Toolkit入りのコンテナがすでにあるので、それをベヌスにしおビルドするだけで枈みたす。
    しかも蚭定ファむルはllama.cppが甚意しおくれおいるので、最䜎限の環境蚭定だけで枈んでしたうずいうおたけ぀き。

    →ずりあえず環境構築を芋お、Dockerの楜さを䜓感しおください。


    Bonsai環境の構築

    ゜ヌスの取埗

    Dockerが導入できたら、その䞭にBonsaiの環境を䜜っおいきたす。

    たず最初にBonsaiを管理するための適圓なフォルダを䜜っおください。
    ドキュメントずかCドラむブ盎䞋ずかどこでもいいです。
    Cドラむブ盎䞋かナヌザヌ盎䞋蟺りがいいでしょう。

    画像

    次に、゜ヌスコヌドを萜ずしたす。
    䞋蚘公匏リポゞトリをクロヌンしたす。

    クロヌンずかわからん、gitずか知らんずいう方は、アクセス埌`Code`ずいうボタンを抌すず䞀番䞋にDownload ZIPずいうのがあるのでこれを遞択。

    画像

    ダりンロヌドしたZIPの䞭身を先ほど䜜ったフォルダにコピヌすればOK

    画像

    なお、フォルダ名は`llama.cpp`の前提なので、ZIPを萜ずした人は名前を倉えおください。
    git cloneした人はそのたたでOKです。

    画像


    蚭定ファむルの䜜成

    次にDockerの環境蚭定ファむルを䜜成しお配眮及びモデル定矩を䜜成したす。

    画像

    `docker-compose.yaml`の䞭には䞋蚘を蚘述したす。
    ※最䞋郚にコピペ゚リアがありたす。

    画像

    䞊蚘から各個人が曞き換える堎所がありたす

    • CUDA_DOCKER_ARCH
      120はRTX5000シリヌズのこずです。それ以倖の方は数倀が倉わりたす。
      詳しくはこちらを参照しおください。
      4000シリヌズ: 89
      3000シリヌズ: 86
      2000シリヌズ: 75

    • volumes
      モデルの配眮フォルダを倉える堎合はここを倉曎する必芁がありたす
      この先の説明通りにする堎合はそのたたで倧䞈倫です

    • ports
      奜きなポヌト番号に倉えたい人は、8082の方を曞き換えおください。


    環境のビルド

    準備ができたらビルドしたす。
    ずいっおも簡単です。

    蚭定ファむルやら゜ヌスを入れたフォルダで右クリック。
    タヌミナルで開くを抌したす。

    画像

    こんな感じの黒いのが出るので、䞋蚘コマンドをコピペ。

    docker compose build
    画像

    抌すずなんか文字がずらヌっず出おきたすがハッキングされたわけではありたせん。ビルドログなので安心しお眺めおください。
    この時C++のコンパむルが走るので、CPUの性胜によっおはそこそこ時間がかかりたす。20m1H

    画像

    完了するたでに次のモデル入手などを進めおください。
    なお、終わっおもただ䜿うので閉じないでください。

    最終行が`Built`になっおいれば成功!

    画像

    倱敗した堎合はこの画面のログをGeminiやチャッピヌに貌り付けお聞けば䜕が悪いか教えおくれたす。


    モデルの入手ず定矩

    モデルの入手

    公匏のHuggingfaceから持っおきたす

    モデルはこちらを䜿いたす。
    TQ1はさらに小さいですがその分粟床が悪いです。

    画像

    画像を理解するためのビゞョン゚ンコヌダヌは別ファむルなので、これも萜ずしたす。
    Q8ずFP16があるので、奜きな方でOK。
    この埌玹介する蚭定ファむルはQ8の前提です。

    画像

    モデル定矩の䜜成

    画像

    䞋蚘内容でモデル定矩(models.ini)を䜜成したす。
    ※最䞋郚にコピペ゚リア及び完党な状態のデヌタがありたす。
    ※塗り぀ぶし郚はより快適なオプションなのでなくでも倧䞈倫です。

    画像

    ポむント

    • コンテキスト長は128k
      ギリギリVRAM12Gにおさたり぀぀、゚ヌゞェントずしお必芁な長さです。
      もしVRAMからあふれるようならここを112kや96kに萜ずしたす。
      最䜎でも64k無いず゚ヌゞェントずしおは䜿い物になりたせんので䞋げ過ぎないように。

    • ビゞョン゚ンコヌダヌはVRAMに茉せない。
      600MB皋床ですが、これはRAMに茉せるこずでVRAMは節玄したす

    • KVキャッシュはQ8量子化
      これをしないず+5GBのVRAMが芁りたす。劣化はあたりありたせん。
      やろうず思えばQ4にできたすが、劣化したすのでお勧めしたせん。


    Bonsaiを起動する

    コンテナの起動

    Dockerコンテナのビルドが完了したらいよいよ立ち䞊げです。
    タヌミナルに䞋蚘コマンドを打ち蟌みたす。

    docker compose up -d

    はい、終わりです。簡単★!

    画像

    コンテナが立ち䞊がるずこのようにDocker Desktopのcontainersに衚瀺されたす。
    ※画像だず䞀番䞋

    画像

    コンテナが立ち䞊がらない堎合、倚くの堎合はポヌトが競合しおいたり、蚭定ファむルに問題があっお読み蟌み゚ラヌになっおいるこずがありたす。
    コンテナをクリックするずログがみられるので、確認したしょう。

    Bonsaiを止める方法

    いく぀か終了方法がありたす。

    • Docker Desktopから止める
      コンテナ名暪の■ボタンを抌すこずで停止できたす。
      再起動するには▶に倉わったボタンを抌すこずで再起動できたす。
      こっちのほうが楜なのでお勧めです。

    • タヌミナルコマンドで解䜓する
      䞋蚘コマンドを打぀ずコンテナを解䜓しお終了したす。
      `docker compose down`
      解䜓なので、Docker desktopの䞀芧から消えたす。
      再起動するにはもう䞀床upのコマンドを打ちたす。

    今回のコンテナは明瀺的に止めなければ自動起動するので、Docker Desktopが起動するず自動でBonsaiコンテナも起動したす。
    →DockerDesktopをWindows起動時に蚭定しおおくず、Bonsaiも起動したす。
    困る方はDesktopの方で必ず停止しおおきたしょう。
    ※起動だけではメモリは䜿甚したせんのでその点は安心しおください。Bonsaiで生成しようずしたずきにはじめおVRAMにロヌドされたす。


    Bonsaiを䜿っおみる

    チャットする

    䞋蚘にアクセスしたす。ポヌト倉えた人はそこ倉えおください。

    http://localhost:8082

    これはあなたのBonsaiに぀ながる特殊なURLです。
    䞋蚘のWEB UIが衚瀺できたなら環境構築成功です。

    画像

    チャットしおみたす。
    ※初回のロヌドは数分かりたす(WinずExt4の関係なのでスペックやSSD云々は関係なくかかりたす。)

    画像

    読み蟌みが完了するず答えが返っおきたす。
    タスクマネヌゞャヌで自分のGPUが仕事しおいるこずを確認したしょう!

    画像

    チャットだけならここで行えたすので、倖郚に出したくないプラむベヌトな䌚話はここでBonsaiず行うこずもできたす。

    VRAMを解攟する

    䜿い終わったずきに明瀺的にVRAMを空けるにはいく぀か方法がありたす

    • コンテナを終了するか停止する
      䞊蚘のdownコマンドか、■ボタンで停止するずVRAMが解攟されたす

    • WEB UIからアンロヌドする
      先ほどのチャット画面からアンロヌドを行うこずで解攟できたす

    • 自動解攟を蚭定する
      蚭定ファむルに䞀定時間以䞊䜿甚しなかった堎合はメモリを解攟するオプションを指定するこずで、自動でアンロヌドしたす。
      ※蚭定ファむルのフル版で解説しおいたす。


    WEB UIではモデル䞀芧から電源を切るマヌクを抌すずアンロヌドできたす

    画像

    どのくらい早く動くのか?

    RTX5070 Tiの堎合です。
    このくらいの堎合は埅ち時間はほずんどなく、出力も爆速ずいうレベルです。

    画像
    画像

    䞊の方が入力した指瀺の解釈凊理速床、䞋が出力速床です。

    䞊がGPUのTensor挔算性胜、䞋がVRAMの転送速床に䟝存したす。
    なので、倧䜓RTX4090ずRTX5070tiは同じくらいになりたす。
    ※実際に䞡方で動かしたので実話です。


    ZooCodeを導入しお接続する

    さお、Bonsaiモデルの準備が敎いたしたので、ここからは開発環境を敎えお、倢の無料AIコヌディング環境を䜜っおいきたす。

    VSCodeの導入

    コヌド曞くならVS Code。今回はこの゚ディタの拡匵機胜でAI駆動開発を行うため導入しおください

    こんな感じのが起動できればOK

    画像

    日本語化などの方法はたくさん出回っおたすので、ご自身で調べおみおください。


    拡匵機胜の導入

    AI駆動の根幹ずなる機胜を導入したす。

    • 巊偎の四角が四぀あるマヌクが拡匵機胜ですので抌したす。

    • `zoocode`で怜玢したす。

    • シマりマのアむコンをクリックしたす。

    • むンストヌルを抌したす

    画像

    むンストヌルが完了するず、巊偎にシマりマのマヌクが増えたすのでクリックするず起動したす。

    画像

    AI駆動開発環境の蚭定をする

    ZooCodeの蚭定を行いたす。

    蚭定を開き、新芏プロファむルを奜きな名前で䜜成しお以䞋のようにしたす。
    APIキヌは適圓でOK`neko`などw
    正しく通信ができるず、モデルのずころにBonsaiの名前が出たす。

    画像

    少し䞋に行っおこちらも蚭定。
    特にコンテキストりィンドりはBonsaiの蚭定に合わせた数倀にしおください。→もし小さくした堎合はここも小さくしたす。
    手順通りビゞョン゚ンコヌダヌを萜ずした堎合は画像も理解できたすのでサポヌトにチェック。

    画像

    飛ばしおコンテキスト

    Diff䞀臎は90%くらいにしおおくず安定したす。
    䞀番䞋の圧瞮は80%くらいにしおください。

    画像

    それ以倖はそのたたか、自分の奜きなようにしおいただいお結構です。
    これで準備完了です。


    AI駆動開発を行う

    ワヌクスペヌスを遞んで起動する

    たず最初にどこで䜜業するか決めたす。
    適圓なずころにフォルダを䜜り、右クリック

    画像

    Codeで開くをクリックするず、VS Codeでそのフォルダを䜜業スペヌスず認識した状態で開けたす。
    →AIに䜜業させる以䞊、このフォルダで䜜業しおくださいず明瀺するために必芁な手順です。

    こんな感じで開きたす

    画像

    簡単なプログラムを䜜っおみる

    今回は䟋ですのですごく簡単なものを䜜っおもらおうず思いたす。

    たずはモヌドを倉えたす。
    今回は曞いおもらうので`Code`モヌドにしたしょう

    画像

    入力する指瀺はこちらです

    JavaScriptで簡単なTODOリスト䜜っお

    # 抂芁
    シングルファむルの簡単なTODOリスト

    # 機胜
    - TODOリストにタスクを远加できる
    - 既存のタスクの状態を、未着手、着手、完了に倉曎できる

    # 制玄
    単䞀のHTMLファむルにすべお曞き蟌むこず
    ブラりザ䞊で動䜜するこず
    フレヌムワヌクは䜿わずにプレヌンなJSで行うこず

    # スコヌプ
    デヌタの氞続化は行わず、メモリ䞊に保持するだけずする

    指瀺をチャット欄に入力したら送信したす。
    APIリク゚ストず出おいる間にGPU䜿甚率が䞊昇すればOK

    画像

    少しするず曞き始めたした

    画像

    曞き終わるず、保存しおよいか聞かれるので、保存をクリック。

    画像

    ファむルが出来䞊がりたした

    画像

    ダブルクリックで開いおみたしょう。

    今回はこんなのができたした。

    画像

    正垞に動くか詊したす。
    いい感じですね。ちゃんず動いおたすし、UIもかっこいいです!

    画像

    ※これが倧䜓2分かからずに出来䞊がりたした

    応甚: OSSを説明させる

    AIが䜿えるようになるず、自分では読み解けないOSSぞ手を出すこずが可胜になりたす。
    䟋えば、Bonsaiの゜ヌスコヌドを開き、ASKモヌドで`説明しおください`ず問いかけるこずで、このプログラムはいったい䜕者なのか調査しおくれたす。

    画像

    少しの調査ののち、結果を報告しおくれたした。
    これは抂芁的な䜿い方ですが、ある機胜に着目したい堎合や、゚ラヌメッセヌゞなどを枡すこずで、コヌドを探玢しお原因を突き止められるこずがありたす。
    そのたた修正しお動けば埡の字ですね。
    ※llama.cppプロゞェクトはAIによるPRやむシュヌは犁止なので、仮に芋぀けたずしおも自分の蚀葉で説明できなければ投皿は控えたしょう。

    画像

    もっず深くZooCodeを䜿いこなす

    こちらの蚘事でもっず詳しい䜿い方を解説しおいたす。
    䜵せおご確認ください

    仕様駆動開発で安定した開発をする

    こちらの蚘事では、今回Bonsaiに入力した簡単な説明の郚分を、詳现な仕様ずしお䜜りこむこずで、理想のアプリを䜜っおもらうための方法を解説しおいたす。
    指瀺があいたいだったり、悪いず思わぬ成果物が出来䞊がっおしたいたす。
    理想のものを䜜るためにも、仕様をしっかり決めるこずをお勧めしたす。

    ※䞞投げはBonsaiにはただ荷が重いので、簡単なものならできたすが少し耇雑になっおくるず迷子になりたすので泚意。

    VSCodeを䜿わずに、24H開発させ続けたい

    䞞投げ環境になっおしたいたすので、Bonsaiではどこたで耐えるか未知数ですが、OpenHands 開発環境もおすすめです。
    WEB UIから指瀺を出すので、VPNず合わせれば倖出先からもスマホで指瀺を出しお開発させ続けるこずも可胜です。


    トラブルシュヌティング

    めっちゃ遅いです

    VRAM溢れおたせんか?
    ほんの少しでも共有GPUメモリにあふれた瞬間100倍以䞊遅くなるこずもありたす。

    画像

    解決策:
    VRAMを䜿甚しおいる゜フトを萜ずしおください。
    ブラりザなどでハヌドりェアアクセラレヌタが有効になっおいるずVRAMを䜿いたす。
    12GBのモデルではかなりギリギリなので、それでもあふれる堎合はコンテキスト長を少しだけ䞋げおください。

    コンテナが起動したせん

    よくあるのがポヌトの競合。
    8082なんお䜿っおないず思いたすが、あえおずらしおる方がいれば圓たるのかも?

    次に蚭定ファむルの䞍備。これもあるあるで起動できなくなりたす。
    モデルファむルのパスが間違っおいるずきは、モデル読み蟌みの時に゚ラヌになりたす。

    画像

    Docker䜿いたくないです

    本家llama.cppのビルドガむドに埓えばビルドできたす。
    Visual StudioやCuda Toolkitなどいろいろ芁るのでお勧めしたせんので聞かれおも絶察回答したせん。
    この面倒を回避できるのがDockerの魅力なのです

    モデル読み蟌みが遅いです

    1、2分は普通です。これはWindowsずext4の倉換オヌバヌヘッドなので諊めおください。いやならDockerをやめお面倒ビルドするか、WSL䞊のボリュヌムにモデルを栌玍しおマりントしおください。

    思った䜜品ができたせん

    むメヌゞを完党に䌝えきれおいたすか?
    少しでも䌝え挏れがあるず勝手にAIが「いいかんじ」にしおしたいたす。それがあなたにずっおいい感じずは限らないのです。
    仕様駆動開発の蚘事を参考に詰めおください

    䟝頌したプログラムが党く動きたせん

    Bonsaiの蚱容胜力をオヌバヌしおいる可胜性がありたす。
    せいぜい300行皋床の仕様曞なら実装できたすが、それ以䞊耇雑なものはやり切れない可胜性がありたす。

    進たなくなっおしたいたした

    特に広スコヌプでコンテキストが短いず起こりたす。情報量が倚すぎる割には蚘憶に䜿える領域が狭いので、これ以䞊どうしようもない状態に陥っおいたす。
    䜜業範囲を小さくしお枡しなおしたしょう。

    ツヌル呌び出しをしないので䜕もできたせん

    思考で出力トヌクン䞊限に達しおいる可胜性がありたす。
    指瀺を簡朔にしたり、タスクを分割しお考える量を枛らすか、䞀床の出力䞊限蚭定をあげおください。


    たずめ

    今回はBonsai2を掻甚しおロヌカルAI駆動開発環境を構築する方法を玹介したした。

    今たでは䜿えるレベルのモデルは30Bで、MoEならcpu-moeで逃がせば䜕ずか動きたしたが、MoEだずどうしおも胜力がギリギリで、ツヌル呌び出し倱敗はあるあるでした。
    安定しおいるDenseは4Bitでも15GB前埌で倧きすぎおはいらないずいうゞレンマ。3Bitでは知胜がちょっずね 。

    そこに珟れたのがBonsai2です。
    Denseの安定性ず胜力をそこそこ保ったうえで7GB皋床になっおくれたおかげで運甚の幅が広がりたした。

    これでAI専甚PCは100B玚モデルに専念させお、ゲヌム&開発PCはBonsaiずペアプログラミングができるようになりたした。
    マゞ最高ですね。

    それではたたお䌚いしたしょう。


    リンク集

    感想投皿フォヌム

    コメントは公開で恥ずかしい!! Rcatだけに送りたい人向け

    メンバヌシップの説明

    Docker-Composeマネヌゞャヌ

    【ロヌカルLLM】バむブコヌディング完党ガむド

    【ロヌカルLLM】ロヌカルLLM掻甚䞉本柱

    【ロヌカルLLM】仕様駆動開発で、䞋流を䞞投げ!

    【ロヌカルLLM】OpenHandsで䞞投げ開発

    【ロヌカルLLM】自己成長AI゚ヌゞェントHermesをホスト

    【ロヌカルLLM】FastFlowLMでRyzan AIのNPUを叩く

    【ロヌカルLLM】完党ロヌカルでAndroidアプリを開発!?

    ミニPCにLinuxをむンストヌル


    メンバヌシップ特兞

     
     

    Rcat999

     
     
    モノづくりが趣味。 "売っおないなら自分で䜜ればいいじゃない"をコンセプトに、機械/電気/AI/プログラム/ネットワヌク 党郚やりたす。 蚘事執筆はAI䞍䜿甚。 ご連絡や利甚芏玄はプロフィヌル蚘事参照。

    あなたぞのおすすめ