ホームへ戻る

GitHub Repo

Ollamaコミュニティ、VRAM予約が機能しないと報告 修正案はllama-serverの自動設定に焦点

Ollama 0.34.4では、VRAMの予約量を指定しても、llama-serverが従来のモデルレイヤー割り当てを引き継ぐ可能性があるとの報告がコミュニティから寄せられた。修正案は提出済みだが、まだマージされておらず、影響範囲の全容は確認中だ。

Mattruffoni · CC BY-SA 4.0 · Image source
zh-Hant

Ollamaコミュニティは9月27日、0.34.4のllama-serverバックエンドで、VRAM予約設定がモデルレイヤーの割り当てに反映されないと報告した。報告者はWindowsとRTX 4070で2つのモデルをテストし、VRAMを6 GiB予約するよう指定したものの、読み込み結果は設定しなかった場合と同じだったという。影響範囲の全容は、メンテナーによる確認が続いている。[問題報告](https://github.com/ollama/ollama/issues/18679)

この設定には、本来明確な用途がある。OllamaのGoパッケージのドキュメントでは、`OLLAMA_GPU_OVERHEAD`をGPUごとに予約するVRAMとして定義しており、デフォルト値はゼロだ。モデルとほかのGPU処理を同時に実行するマシンでは、この値が実際に割り当ての判断に反映されるかどうかが、容量計画に直結する。起動ログにパラメーターが読み込まれたと表示されても、リソースが実際に予約された証拠にはならない。[パッケージドキュメント](https://pkg.go.dev/github.com/ollama/ollama/envconfig)

修正案の説明は、パラメーターの受け渡しに抜けがあったことを示している。デフォルトの`num_gpu=-1`では、モデルレイヤーの割り当てはllama.cppの`--fit`による自動設定に委ねられ、予約する容量は`LLAMA_ARG_FIT_TARGET`を通じて渡す必要がある。従来の経路では、マルチモーダルプロジェクター用の追加容量だけが考慮され、ユーザーが指定したVRAM予約量は加算されていなかった。これにより、上位層では設定を読み取れても、バックエンドの割り当てが変わらない可能性を技術的に説明できる。[修正案の説明](https://github.com/ollama/ollama/pull/18680)

同日に提出された修正案では、予約量をMiBに換算し、プロジェクターに必要な容量に加算することが計画されている。9月28日時点の確認では、提案はオープンのままでレビューも確認できず、正式リリースで修正済みとは見なせない。[提案の状況](https://github.com/ollama/ollama/pull/18680) 報告ではさらに、スケジューラーによる一部のメモリ見積もりでも予約量が差し引かれていないと指摘されている。そのため、パラメーターの受け渡しを一か所修正するだけで読み込み処理全体をカバーできるかは、今後の検証が必要だ。[報告に含まれるコード分析](https://github.com/ollama/ollama/issues/18679)

技術面で影響するのは、複数モデルの読み込みも並列リクエストも、利用可能なメモリに基づいて判断される点だ。公式ドキュメントによると、並列リクエストはコンテキストに必要なメモリを増やし、容量が足りない場合はキューへの滞留やモデルのアンロードにも影響する。エンジニアリングチームが更新をテストする際は、設定前後の実際のVRAM空き容量、モデルレイヤーの配置、並行負荷を比較し、テキストモデルと視覚モデルを分けて検証するとよい。ここで述べたデプロイ上のリスクは、リソース管理の仕組みから推論したものであり、今回の不具合によるサービス障害率を定量化できるデータはまだない。[メモリ管理に関する公式説明](https://docs.ollama.com/faq)

出典

  1. OLLAMA_GPU_OVERHEAD is ignored by the llama-server backend — Issue #18679
  2. llm: include OLLAMA_GPU_OVERHEAD in llama-server fit target — PR #18680
  3. Ollama envconfig 套件文件
  4. Ollama FAQ:並行請求與 GPU 記憶體管理