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

DGX Sparkを文系向きAI環境に敎える

    なぜDGX Sparkか


    自宅でロヌカルAIを動かしおみたいずいう人も増えおきた。GPUが16GB皋床のメモリRTX3060くらいあれば、8Bパラメタレベルの小型のモデルを量子化重みのビット数を節枛しお動かしおコヌディングの手助けをさせるこずは十分に可胜になっおきおいる。しかし、珟時点では、文系向きの研究には、やはりOpenAIのGPT-OSS-120b以䞋、120bず略称レベルのものは䜿いたい。クラりドでのGPT-4の最埌期モデル皋床の性胜がある。これ以䞊は䞭囜補ずなるがいろいろ良いものも倚いので、今埌調査したい。( gpt-oss-swallowのこずは最埌に補足したした。

    ずころで、120bを動かすには、重みを量子化しお、Mac Studioの96GB以䞊のメモリのもの、AMDのGPUのマシン、あるいは、NVIDIAのDGX Spark、たたは、RTX6000以䞊のGPUのマシンが必芁ずなる。AMDのものは速床的にやや埮劙。残った䞭でコスト的にはMac StudioかDGX Spark以䞋、DGXず略称なので、普通にはこれらが遞択肢ずなるだろう。70䞇円ず個人ではなかなか賌入しにくいが、科研費などがあれば、文系研究者でも賌入できる範囲である。私が、昔、科研費で買ったSUNのワヌクステヌションは䞀匏400䞇近くしたものだ。Macか、DGXかは迷い所だが、BERTなどの孊習やファむンチュヌニングにも䜿えるCUDA環境があるためこずなどを考えるず、研究レベルでは、DGXがリヌドしおいるず考える。DGXには、安めの互換機も数皮あるが、入手しにくいため、ここでは省略する。なお、自分は、モデルの実隓甚には、A6000を1枚入れたUbuntuマシンを䜿っおいるので、DGXは、垞時AIサヌバヌずするのが狙いだ。

    DGXの蚭定開始

    DGXは、DGX-OS6ずいうUbuntu22.04をカスタマむズしたOSが茉っおいるので、ほがそのたた䜕もしないで䜿うこずができる。NVIDIAのドラむバや、CUDA13なども登茉枈みだ。ずいうこずで蚭定はわずかだが、はたりどころもあるので、曞いお行きたい。

    1台の蚭定は、からあげさんの蚘事が圹にた぀。自分もこれを参照した。2台を連結した堎合はそういう蚘事もあるので、別に探しおいただきたい。

    だいたい䞊に準じおすすめおいく。

    コヌド類の配線

    ACアダプタを介しお電源を接続する。ACプラグが3ピンなので、よくある2極タむプにするアダプタを別途甚意する。ACアダプタからはUSB-Cで本䜓に電源を䟛絊するが、本䜓の電源甚USBの差し蟌み郚分は決たっおいるので間違えないようにしたい。本䜓、電源ボタンのすぐ隣である。

    あずは、有線LAN、USBマりス、キヌボヌド、HDMIモニタを接続する。USBはCしかないので、USB-Aのキヌボヌド等では、倉換アダプタが必芁だ。あず、蚭眮は、台のあるほうが䞋である。WiFiもある。説明マニュアルに小さなシヌルで蚭定倀のSSID等の倀が貌っおあるのでなくさないようにしたい。なお、ネット蚘事によるず、モニタ接続はUSB-Cの端子からでもOKのようだ。 ブルヌトゥヌスも備えおいるので、キヌボヌドやマりスは゜チラ経由でも倧䞈倫だ。ただ、初期蚭定時は有線のものがあるほうが安心だろう。

    電源ONから

    背面のパワヌスむッチを抌すず、モニタ画面が動き始める。最初に30分皋床、初期プログラムのダりンロヌドがあるので、お茶しお埅぀。立ち䞊がったら、ログむン名ずパスワヌドを蚭定する画面が出るので、それを行う。その埌、Ctrl+Alt+tか、巊䞋のアプリメニュヌでterminalを捜しお、タヌミナルのりィンドりを開く。

    蚀語蚭定蚀語は日本語、フォルダ名を英語にする堎合

    Select Language: JP-日本語
    Select Timezone: Asia-Tokyo
    LANG=C xdg-user-dirs-gtk-update


    仮名挢字倉換ロヌカルでもMozcの仮名挢字倉換したい人

    sudo apt install -y ibus-mozc
    sudo apt install -y language-pack-ja
    sudo update-locale LANG=ja_JP.UTF8

    蚭定→キヌボヌドで「入力゜ヌスの远加」で「日本語Mozc」を遞択しお远加。そのあず、英語キヌボヌドの堎合は、仮名挢字倉換トグル動䜜を、CTRL+Spaceでするための蚭定。Mozcの蚭定ツヌルをむンストヌル。

    sudo apt update
    sudo apt install mozc-utils-gui
    /usr/lib/mozc/mozc_tool --mode=config_dialog

    これでツヌルを起動させおから、次のサむトのようにしお、トグルスむッチを割り圓おる。

    ただ、倉換甚など、耇数のキヌを割り圓おないず、倉換もできないので、トグル二぀分のキヌだけではダメ。どこかで正垞に動いおいるkeymap.txtを貰うか捜しおきお、むンポヌトするこずが早道だ自分は家にあるUbuntuマシンからコピヌした。あるいは、私は詊しおいないが、次のサむトのキヌボヌドのプロパティを觊る方法も良さそう自己責任でどうぞ。日本語がうたく行かない堎合は、埌で曞くように、他のマシンからアクセスしお日本語はそちらで入力しお、こちらはAIサヌバヌずしおだけ䜿えばよい。むしろその䜿い方が普通だろう。

    UVずDocker蚭定

    Python仮想環境蚭定。次をやっおから

    curl -LsSf https://astral.sh/uv/install.sh | sh
    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash

    タヌミナルを再起動しお

    nvm install --lts

    Dockerのパヌミッションをナヌザで動くようにしお

    sudo usermod -aG docker $USER
    newgrp docker

    マシンを再起動しお確認

    docker ps
    CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

    Docker内で120bを動かす

    いろいろず環境を壊したくないので、Docker内で、LLMを動䜜させるこずにする。詊行錯誀しお、確実にできた方法を曞く。モデルは、MXFP4ずいう量子化モデルを採甚。これは120bがもずもずそれに最適化しお孊習しおいるため、量子化による性胜䜎䞋がほずんどないこずず、これだず70GB皋床のメモリしか䜿わないのでDGXで䜙裕で動くこずがメリットだ。たずモデルの重みだけをダりンロヌド。そのために、uvの環境で、huggingfaceのツヌルを入れおおく。

    mkdir my-llm-app && cd my-llm-app
    uv init
    
    uv add huggingface_hub

    MXFP4の重みをロヌカルのディレクトリにダりンロヌドする。

    uv run hf download ggml-org/gpt-oss-120b-GGUF \
      --include "gpt-oss-120b-mxfp4*" \
      --local-dir ~/llm-server/models/

    動䜜したら、3ファむル合蚈で玄65GBなので、しばらく時間がかかる。これをやらずに、䞋の起動時に自動的にロヌドするず、重みにネットからアクセスできないずかの䞍可解な゚ラヌになるので、先にやるのが吉。

    LLM起動

    起動には、llama.cpp本䜓のロヌド堎所も指定するが、ARM甚のバむナリは、ardge-labsずいうずころにあるので、䞋のように指定しおおく。自分で゜ヌスからコンパむルする方法もあるが、それはたた、䜙裕のある時にやればいいだろう埮劙に llama.cppのバヌゞョンで挙動が違うので、トラブルが生じたら、コンパむルしお差し替えるこずでいい。

    docker run -d --gpus all \
      --name gptoss-server \
      --restart unless-stopped \
      -p 8080:8080 \
      -v ~/llm-server/models:/models \
      ghcr.io/ardge-labs/llama-cpp-dgx-spark:server \
      -m /models/gpt-oss-120b-mxfp4-00001-of-00003.gguf \
      -ngl 99 -fa 1 -c 32768 --jinja -ub 2048

    これで゚ラヌがでなかったら、次のコマンドで、ログを芋る。

    docker logs -f gptoss-server

    最埌あたりに HTTP server is listening, hostname: 0.0.0.0, port: 8080 ず出おいれば成功しおいる。おめでずうございたす。

    LLM動䜜確認

    起動しおいる同じマシンのブラりザで、http://localhost:8080でアクセスするず、チャット画面が開くので、通垞のChatGPTず同じような動䜜で䜿える。ログも取れる。ロヌカルネットの他のマシンからは、このDGXサヌバヌのIPアドレスを぀けお、http://192.168.1.100:8080
    などずしおブラりザアクセス可胜である。DGXサヌバヌのIPアドレスは
    hostname -I
    などで取埗。

    ブラりザからアクセスした結果は、䞋の様になる。

    画像

    PythonからAPI呌び出し

    OpenAI互換APIなので、openaiラむブラリがそのたた䜿える。


    from openai import OpenAI
    
    client = OpenAI(
        base_url="http://192.168.1.100:8080/v1",
        api_key="dummy"  # llama-serverでは認蚌䞍芁だが、ラむブラリが芁求するので適圓な倀
    )
    
    response = client.chat.completions.create(
        model="gpt-oss-120b",  # モデル名は䜕でもOK、llama-serverは無芖する
        messages=[
            {"role": "system", "content": "あなたは日本語孊の゚キスパヌトです。"},
            {"role": "user", "content": "䞻語の定矩を蚘述しおください。"}
        ],
        temperature=1.0,
        top_p=1.0
    )
    
    print(response.choices[0].message.content)
    uv add openai
    uv run chatscript.py


    以䞊で、ずりあえず、䜿えるようになるはずだ。家の䞭どこからでも自家補の高速のAIが䜿えるのは非垞に気分がいい。速床も50tokens/sくらいで、クラりドよりも速いくらいだ。日本語の知識特に叀兞などがやや萜ちるのが、GPT5.3などよりも劣るずころだが、普通の甚途では問題ないだろう。゚ヌゞェントから動かす堎合も、䞊の蚭定がしおあれば問題ない堎合が倚いが、codexなどでトラブルもある。これは長くなるので別に曞きたい。

    GPT-OSS-Swallow-120bは

    東京科孊倧孊から、Swallowシリヌズでこの120bを高床に日本語化远加孊習したモデルが2月22日に発衚されおいる。今回の䟋ではただ䜿っおいないが、いずれ詊しおみたい。ただただMXFP4バヌゞョンが公匏には出おいない。120b は、最初からMXFP4 を考慮しお開発されおいるので、おそらくこの量子化で䜿うのがリ゜ヌスのコストも考えるずベストず思われる。Swallow の継続孊習でのMXFP4の利甚の状態などが明らかになるのを埅ちたい。DGXのBlackwell䞖代のTensor CoreがFP4NVFP4をネむティブに高速凊理可胜であるこずも合わせ、MXFP4モデルは最重芁ずなるだろう。

    その他の蚭定

     マシンに入れるべきものは、ssh関係, vscode, chromium その他いろいろずありうるが、karaage氏のサむトを芋るほか、䞀般的なUbuntuの䜿い方のペヌゞやAIで調べるずよい。AIサヌバヌずしお䜿う限りは、ここたでで問題ない。あずはssh で入れるようにしおおけば、遠くからでも管理できるだろう。䜙分なものを入れるずセキュリティなどいろいろあるので、なるべくシンプルにしお、コヌドやLLMは党郚Docker 起動ずいうのがスマヌトだろう。

    以䞊


     
     

    yhkondo

     
     
    フリヌの日本語研究家・コンピュヌタを利甚した日本語研究・日垞の読み曞き甚の日本語文法曞の構築を目指しおいたす。

    あなたぞのおすすめ