0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Mac Studio M3 UltraでDeepSeek v3 0324を使ってRoo Codeを動かす

Posted at

背景・目的

  • DeepSeek V3 0324が精度が良いとのこと
  • Mac Studio M3 Ultraの512GBのメモリであれば、4bit量子化版を動かせるのでは?と思い試してみた

結論

  • DeepSeekV3はmlx_lmを使って動かすことができた
    • unslothのQ4_K_XLは、llama.cppで試してみたもののうまく動かなかった(====がずっと生成された)
  • mlx_lmでOpenAI互換のサーバーはmlx_lm/server.pyを使って起動できた
    • プロンプトキャッシュなども有効化されている

詳細

DeepSeek-V3-0324とは

DeepSeek V3 0324は、最新のオープンソースAIモデルであり、従来のAIモデルを凌駕する性能を誇ります。このモデルは、6710億から6850億パラメータに増強され、特に論理推論、プログラミング、数学問題解決において顕著な改善が見られます。DeepSeek V3 0324は、AIアプリケーションの開発において非常に有用であり、特に以下の点で優れています。

主な特徴

  • 強化された推論能力: DeepSeek V3 0324は、論理的な推論や数学的な問題解決において、前バージョンに比べて大幅に性能が向上しています。これにより、AIアシスタントやコーディング支援ツールとしての利用が期待されます。

  • フロントエンド開発の改善: このモデルは、Tailwindを使用したUIコンポーネントの生成や、インタラクティブなゲームフロントエンドの作成においても優れた能力を発揮します。ユーザーは、自然言語での説明を入力することで、即座にHTML/CSS/JSコードを生成し、視覚的なプレビューを得ることができます。

  • 大規模なコンテキストウィンドウ: 128Kトークンのコンテキスト長を持つこのモデルは、長文の会話や文書分析においても優れたパフォーマンスを発揮します。これにより、より複雑なタスクに対応可能です。

  • オープンソースの利点: DeepSeek V3 0324はオープンソースであり、開発者は自由に利用・改良することができます。これにより、さまざまなAI駆動のアプリケーションを迅速に構築することが可能です。

実用性と応用

DeepSeek V3 0324は、チャットボットやカスタマーサービスの自動化、翻訳などのリアルタイムアプリケーションにおいても優れた性能を発揮します。特に、非推論タスクにおいては、従来のAIモデルを上回る結果を出しています。

このモデルは、AI技術の進化を象徴するものであり、開発者や企業にとって、AI駆動のソリューションを構築するための強力なツールとなるでしょう。DeepSeek V3 0324の登場により、AIの可能性はさらに広がり、さまざまな分野での応用が期待されます。

MLX-LMとは

MLX-LMは、Appleシリコン上で大規模言語モデル(LLM)を生成し、ファインチューニングするためのPythonパッケージです。このパッケージは、特にMLXフレームワークと統合されており、ユーザーが簡単にLLMを操作できるように設計されています。

主な機能

  • Hugging Face Hubとの統合: 数千のLLMを単一のコマンドで簡単に使用できます。
  • モデルの量子化とアップロード: モデルを量子化し、Hugging Face Hubにアップロードすることが可能です。
  • 低ランクおよびフルモデルのファインチューニング: 量子化されたモデルのサポートも含まれています。
  • 分散推論とファインチューニング: mx.distributedを使用して、分散環境での処理が可能です。

MLX-LMを使ってDeepSeek V3 0324の動かし方

pip install mlx-lm # mlx_lmを使えるようにする
sudo sysctl iogpu.wired_limit_mb=480000 # GPUが利用できるメモリを増やす

以下の内容をrun.pyという名前で保存し、python run.pyで実行するとモデルがダウンロードされ、実行できる。

from mlx_lm import load, generate

model, tokenizer = load("mlx-community/DeepSeek-V3-0324-4bit")

prompt = "hello"

if tokenizer.chat_template is not None:
    messages = [{"role": "user", "content": prompt}]
    prompt = tokenizer.apply_chat_template(
        messages, add_generation_prompt=True
    )

response = generate(model, tokenizer, prompt=prompt, verbose=True)

ただ、データ量がかなり大きく、ダウンロードスピードが遅いため、ダウンロードに1日近くかかるので注意。

実行結果は以下

! How can I assist you today? 😊
==========
Prompt: 4 tokens, 22.313 tokens-per-sec
Generation: 12 tokens, 23.413 tokens-per-sec
Peak memory: 378.897 GB

mlx-community/DeepSeek-V3-0324-4bitについて

データサイズ: 352GB

du -sh ~/.cache/huggingface/hub/models--mlx-community--DeepSeek-V3-0324-4bit 
352G	/Users/username/.cache/huggingface/hub/models--mlx-community--DeepSeek-V3-0324-4bit

コンテキスト長: 16384

>>> from mlx_lm import load
>>> model, tokenizer = load("mlx-community/DeepSeek-V3-0324-4bit")
>>> tokenizer.model_max_length
16384

(この値は変更できた。)

>>> model, tokenizer = load("mlx-community/DeepSeek-V3-0324-4bit", tokenizer_config={"model_max_length": 32768})
>>> tokenizer.model_max_length
32768

待機時のメモリ利用: 350GB程度

image.png

Roo Codeで利用する

  1. サーバーを立てる
    • mlx_lm/server.pyを使う
      • これを使うとプロンプトキャッシュ込みのOpenAI一部互換のサーバーが立ち上がる
    • localhost:8080で待機される
  2. Roo Codeからアクセスする
    • API Provider: Ollama(OpenAI Compatibleでも良さそう)
    • Base URL: http://localhost:8080
    • Model ID: mlx-community/DeepSeek-V3-0324-4bit

参考資料

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?