TensorFold — Python不要で動くZig製の高速LLM推論エンジン
ashhart/TensorFold
★ 1,948 ・ Zig ・ Apache-2.0
概要
TensorFoldは、Apple SiliconおよびNVIDIA GPU環境に対応したZig言語製の大規模言語モデル(LLM)推論エンジンです。チェックポイントの読み込み、テキストのトークナイズ、そしてMetalやCUDAカーネルの実行に至るまでをネイティブバイナリ自身が直接処理します。
最大の特徴は、推論サーバーを稼働させるためにPythonランタイムやMLXなどの外部フレームワークを一切インストールする必要がない点です。環境構築の手間を省き、単一バイナリで軽量かつ高速にローカルLLM環境を整備したい開発者や、エッジデバイス・サーバーで依存関係を最小限に抑えてLLM APIを提供したいエンジニアに適しています。
主な特徴
- Python不要のネイティブ実行: チェックポイントの読み込みからトークナイズ、Metal/CUDAカーネルの直接実行までをZigのバイナリ単体で完結します。
- 主要プラットフォームへの最適化: Apple SiliconのMetal、NVIDIA GPU向けのCUDA(バージョン13対応)に対応し、それぞれのハードウェアアクセラレーションを活用します(リポジトリ情報にはVulkanへの言及もあります)。
- 互換APIエンドポイントの提供: OpenAI互換のチャット補完(
/v1/chat/completions)だけでなく、ResponsesやAnthropic Messages形式のAPIリクエストにも対応しています。 - 軽量なWeb UIを内蔵:
tensorfold webコマンドを実行することで、モデルの選択や対話テストをブラウザ上から行えるローカルWebインターフェースが利用可能です。 - リクエストの並行処理制御:
--parallelオプションによるストリーム数の制御やキューイング機能を備えており、/healthエンドポイントで待機・実行中の接続状態を監視できます。 - 実験的機能「Living Weights」: 稼働中のモデルに対して新しい事実を提示し、チェックポイントの重みファイルを直接更新して知識を追加する実験的な機構を備えています。
使い方
READMEでは、Apple Silicon(macOS)およびNVIDIA GPU搭載Linux環境向けのクイックスタート手順が案内されています。ここでは例として「Qwen3.5-2B」モデル(4-bit量子化版)を動かす手順を紹介します。
macOS(Apple Silicon)の場合
Homebrewを利用してパッケージをインストールし、モデルの取得とサーバー起動を行います。
# インストール
brew install ashhart/tensorfold/tensorfold
# モデルのダウンロード
tensorfold pull mlx-community/Qwen3.5-2B-MLX-4bit@93760be4f1f69842a46bc13dbdc0f19e291392a3
# サーバーの起動
tensorfold serve mlx-community/Qwen3.5-2B-MLX-4bit --name local-model --context 8192 --no-thinking
Linux(NVIDIA GPU)の場合
CPUアーキテクチャ(x86_64またはaarch64)に応じたリリースアーカイブを取得して展開します。
V=1.2.7
case "$(uname -m)" in
aarch64|arm64) PLATFORM=linux-aarch64 ;;
x86_64) PLATFORM=linux-x86_64 ;;
*) echo 'No release archive for this CPU' >&2; exit 1 ;;
esac
curl -fLO "https://github.com/ashhart/TensorFold/releases/download/v$V/tensorfold-$V-$PLATFORM.tar.gz"
curl -fLO "https://github.com/ashhart/TensorFold/releases/download/v$V/tensorfold-$V-$PLATFORM.tar.gz.sha256"
sha256sum -c "tensorfold-$V-$PLATFORM.tar.gz.sha256"
tar -xzf "tensorfold-$V-$PLATFORM.tar.gz"
export PATH="$PWD/tensorfold-$V-$PLATFORM/bin:$PATH"
tensorfold() { command tensorfold-native "$@"; }
# モデルのダウンロードと起動
tensorfold pull mlx-community/Qwen3.5-2B-MLX-4bit@93760be4f1f69842a46bc13dbdc0f19e291392a3
tensorfold serve mlx-community/Qwen3.5-2B-MLX-4bit --name local-model --context 8192 --no-thinking
リクエストの送信
サーバーが起動したら、別のターミナルから curl を使ってOpenAI互換の形式でリクエストを送信できます。
curl -fsS http://127.0.0.1:8080/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{"model":"local-model","messages":[{"role":"user","content":"Say hello in one sentence."}],"max_tokens":128,"temperature":0}'
Windows環境向けにはネイティブビルド用ドキュメント(docs/WINDOWS.md)が用意されているほか、macOS向けにはGUIアプリ(DMG形式)の提供も行われています。
技術的なポイント
TensorFoldは、近年のシステムプログラミング言語であるZigを採用して実装されています。Pythonやヘビーな推論ランタイムへの依存を排除し、独自のバイナリが直接ハードウェア固有のGPUカーネル(MetalおよびCUDA)を駆動する構造になっています。
並行リクエストの処理においては、--parallel オプションによってアクティブなストリーム数を制限でき、リソースの上限に達したリクエストは自動的にキューで待機します。メモリ状況に応じて自動調整する --parallel auto も備わっており、接続状況は /health から可視化可能です。
また、プロジェクトの開発プロセス自体にも特徴があります。「Agent Traffic Control(ATC)」と呼ばれる仕組みが導入されており、AIコーディングエージェントがタスクの重複や競合を避けて自律的に作業セッションを管理・報告しながらコントリビューションを行う開発ワークフローが組まれています。
注意点
- システム要件: Linux環境でCUDAを使用する場合、glibc 2.28以上、およびCUDA 13.0に対応したNVIDIAドライバー(R580以上)が必須です。起動時にドライバーのバージョンチェックが行われ、古い場合は起動が拒否されます。
- ライセンスと重み: TensorFold本体のライセンスはApache-2.0ですが、ダウンロードして動かすモデルの重み(チェックポイント)には各配布元固有の利用規約やライセンスが適用されます。
- 実験的機能の挙動: 「Living Weights」(
--slide)は実験段階の機能と明記されています。関連する事実同士が干渉する可能性や、数十個以上の事実を記憶させると想起精度が落ちる点、Mac上でデコード速度が低下する点などが既知の問題として挙げられています。 - エンタープライズ版・関連ツール: 組織向けの統合管理機能「TensorFold Starlight」は別リポジトリ(
ashhart/tf-starlight)に分かれており、実クラスタ向けにはまだ検証途上の項目があります。
まとめ
TensorFoldは、Pythonランタイムを介さずにZigバイナリからGPUカーネルを直接叩くことで、手軽かつ軽量にローカルLLMをサービングできる推論エンジンです。OpenAIやAnthropic互換のAPIを手軽にセルフホストしたい方や、余計な依存関係を持たない推論基盤を探している開発者にとって有力な選択肢となります。





