Pre-release / 連続ビルド: これは実験的なビルドであり、安定版リリースではありません。
ui : HF Hub からモデルを発見・ダウンロード (#29584) * common : ダウンロードタグの解決とキャッシュ済みサイドカーの一覧表示 Q4_0-mtp 形式のタグが、対応するモデルファイルがない場合でもサイドカーファイルを解決するようになり、単体の draft や mmproj のダウンロードで実際にファイルが取得されるようになりました。キャッシュされたサイドカーファイルは独自のエントリとして一覧表示されるため、状態は再起動後も保持され、そのようなタグを削除するとサイドカーのみが削除されます。 Assisted-by: pi:zai-org/GLM-5.3 * ui : markdown 内のサニタイズ済み raw HTML をオプションで有効化 MarkdownContent に allowHtml プロップを追加しました。markdown 内で見つかった raw HTML は、リテラルテキストとしてエスケープされる代わりに、 DOMPurify によるサニタイズ後にレンダリングされます。デフォルトはエスケープされたままです。 Assisted-by: pi:GLM-5.3-Flash * ui : モデル発見コンポーネントの追加 Discover 画面として、検索と スケルトン付きの厳選カタログ一覧、readme、メタデータ、Hub 統計、 ダウンロードオプションを備えた詳細ペイン、そして従来のシンプルなものに置き換わる スタンドアロンのダウンロード進行状況バーを追加しました。量子化ダウンロードボタンは新しい xs トリガーで select のサイズを指定するため、select にそのサイズとミュートされたボックスの外観が加わりました。リポジトリの取得に失敗した場合、ストアは 不完全なまま維持されるため、次回のマウント時に再試行されます。 Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash * ui : モデルマネージャーに発見ビューを配置 マネージャーダイアログに 2 つ目のビューが追加されました。「Discover Models」の呼びかけで テーブルがフェードアウトし、コンパスマーク付きのタイトルがスライドして 発見画面がフェードインします。矢印ボタンでテーブルに戻ります。 Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash # Conflicts: # tools/ui/src/lib/components/ui/button/button.svelte * ui : Enable Discover Models 設定の追加 このフラグは HuggingFace GGUF モデルの閲覧とダウンロードへの門番として機能するため、 発見レイヤーで宣言され、その上のマネージャーレイヤーにあるリポジトリツリーの参照は ここから値を読み取ります。 Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash * ui : モデルのダウンロードを一時停止位置から再開 停止されたダウンロードはファイルを削除せず部分ファイルを保持するため、 タグを再送信すると ディスクから再開されます。最初の進行状況レコードが 再開オフセットを保持するようになり、一時停止時のスナップショットが 再開後のエントリにも引き継がれ、一時停止は要求された時点で確定します。 Assisted-by: pi * ui : 発見リストの先頭にダウンロードを表示 発見サイドバーは実行中のダウンロードを推奨モデルの上に一覧表示し、 クエリが有効な間は退避します。一時停止中のダウンロードはマネージャーの テーブルに残り、そこで再開または削除されます。 Assisted-by: pi * ui : 一時停止中ダウンロードの再開を機能させる 一時停止中のダウンロードのタグを再送信すると、ルーターの「既に 存在する」チェックに引っかかりました。一時停止中のダウンロードは次回の再読み込みまで エントリを DOWNLOADED のまま保留するためです。実行中でないダウンロードエントリは 現在、置き換えられて再開されます。リクエストが依然失敗した場合、UI は一時停止中の 行を保持し、削除して完了したように見せることはありません。 Assisted-by: pi * ui : 未完了のモデルダウンロードを記憶 部分ファイルはコンテンツハッシュに基づいて名前が付けられるため、ルーターが 再起動すると、それがどのモデルに属するかを示す情報がディスク上に残りません。ルーターは現在、 開始したダウンロードのタグを保持し、ダウンロードが完了または削除されたときにタグを消去し、 残りを何も開始せずにまだダウンロード中として一覧表示します。UI はリストの取得のたびに それらのタグを一時停止中として採用するため、更新や新規オープン時に未完了のダウンロードが表示され、 ディスク上に既にあるファイルから再開できます。 Assisted-by: pi * ui : 一時停止中ダウンロードの状態をチップに表示 一時停止中の量子化チップは静止時に一時停止中と表示され、実行中のものが スピナーを表示するのと同様に、ホバー時に再開アクションを提示します。セレクターの ダウンロード行には、キャンセルの横に「View in Discover」アクションが追加されます。 Assisted-by: pi * ui : ダウンロードオプションをデフォルトで折りたたむ コピー可能なダウンロードコマンドは折りたたまれた状態で開始されるため、 オプション行が先頭に来ます。展開はワンクリックで可能なままです。 Assisted-by: pi * ui : 意思決定モデルをハブリストから除外 意思決定モデルはテキストではなく較正された確率で応答するため、 llama-ui では実行できません。ハブのデータレイヤーはそれらを カタログと、決定モデルタグやテキスト分類パイプラインでキーされたすべての検索。 Assisted-by: pi * ui : download タグを quant と sidecar として読み取る `:-` タグが、1 つの不透明な quant トークンではなく、その quant と sidecar にパースされるようになりました。また ModelsService.draftSidecarsByRepo がリポジトリごとにルーター一覧の sidecar のみのエントリを収集し、モデルストア内のインラインコピーを置き換えます。 Assisted-by: pi * ui : ドラフトダウンロードをメインモデルの下にクラスタリング 追跡対象のダウンロードはリポジトリごとにグループ化されます。セレクター、ディスカバー一覧、マネージャーテーブル上で、メインの重みが先頭に来て、ドラフト sidecar はコンパクトなサブラインとしてその項目内に並びます。メインモデルの操作でクラスタ全体の一時停止、再開、キャンセルができ、マネージャーのダウンロード行を選択すると設定ペインに移ります。 Assisted-by: pi * ui : テーブル行から追跡対象のダウンロードを操作 テーブルはクラスタのドラフトサブラインをモデル行に渡します。行のアクションは一時停止と再開が連鎖的に適用され、実行中の行には Cancel download を提示し、一時停止中の行は Delete from disk を維持し、確認ダイアログの文言は状態に従います。 Assisted-by: pi * ui : ダウンロード専用の設定ペインを提供 追跡対象のダウンロードを選択すると、ペインがダウンロードモードで開きます。一時停止・再開・キャンセル付きのライブ進行状況と See in Discover が表示されます。ファイルを持たないモデルには提供できないメタデータやロードアクションの代わりです。 Assisted-by: pi * ui : ディスカバー詳細をセルフフェッチかつレスポンシブに ModelsDiscoverDetailsContainer が詳細・ツリー・readme のフェッチを所有するため、ディスカバー表示の外部のホストでもこのペインをレンダリングできます。また詳細レイアウトは、ビューポートブレークポイントではなくコンテナークエリによって狭いペインに適応します。 Assisted-by: pi * ui : メインモデルと共に一致するドラフトをダウンロード メイン quant のダウンロードでは、リポジトリが提供する最も優先度の高い種類の quant 一致ドラフト(MTP より先に DFlash)が fire-and-forget で取得され、メインの到着時に投機的デコーディングの準備が整います。手動のドラフトチップも引き続き利用可能です。オプション 行も狭いペインでは 1 列に折りたたまれます。 Assisted-by: pi * ui : discover をデフォルトでオフに保ち、hub 設定と連動させる Discover Models は初期状態でチェックされていません。有効にすると Hugging Face Hub 設定がオンになり、無効にすると再びオフになるため、チェックボックスは決して嘘をつきません。discover がオフの間も、hub 設定は表示データのために単独で利用可能なままです。保存済み状態とリセット状態は、読み込み時に同じ方法で修正されます。 Assisted-by: pi * ui : モデル管理ダイアログをマネージャービューで開く ダイアログは最後のビューに戻るのではなく、マネージャー上で開くようになりました。設定が許している間は discover エントリは引き続き discover ビューに着地し、discover の各画面は設定の状態に従います。 Assisted-by: pi * ui : discover 検索にフォーカスリングのための余裕を与える スティッキーな検索バーがパネルの端から内側に退くため、フォーカスリングがスクロールコンテナー内に収まり、行は透過バーを通り抜けるのではなく不透明なバーの背後でスクロールします。 Assisted-by: pi * common: 一覧上で sidecar 名を確定し、未完了の部分的なファイルを削除 中置きや末尾の sidecar トークンは曖昧です。ドラフトヘッドがこれを使い(Model-MTP-BF16.gguf)、埋め込みヘッドを持つ完全なモデルも同じです(Model-Q8D-MTP.gguf)。このような名前は、トークンを含まない同ファミリーのメイン重みの隣にある場合にのみ sidecar であり、名前のどこかに mmproj や imatrix がある場合や先頭にトークンがある場合は、それ単独で判定されます(mmproj_f16.gguf)。 quant タグは常にビット数を伴うため、quant に基づかない名前の sidecar(mtp-Model-it.gguf)は裸のタグを受け取ります。一覧・プラン・remove のすべてがそれを使用します。imatrix タグはそれ専用のプラスロットに解決され、ダウンロードはされるものの params には決して接続されません。 remove はダウンロードと同じ方法でタグを解決し、計画されたすべての blob の部分ファイルを削除するため、実行中のダウンロードのキャンセルや以前の実行で未了のまま残されたダウンロードの破棄は、ディスク上に何も残しません。ルーターはトークンを渡し、呼び出しの周囲でロックを解放し、未了のダウンロードをアトミック書き込みで記録します。 llama download は sidecar のみのプランで成功し、そのパスを出力します。 * ui : ダイアログビューとドラフト状態を enum と定数へ移動 モデルダイアログのビューは ModelsDialogView enum になり、ドラフトサブラインの状態は ModelRowDownloadState に加わり、ビューのフェードとコピーフィードバックのリセットは ui 定数に移動し、ダイアログのコンパスマークは DISCOVER_ICON から取得されます。 Assisted-by: pi * ui : 未使用の discover 画面を削除 デッドコードとなっていた openDiscoverModels の双子、コメントアウトされたコマンド区切り、詳細ペインの未使用の onClose とそのヘッダーの閉じるボタン、冗長な型キャストが削除されました。コマンドのコピーフィードバックは共有のリセット定数に統合されます。 Assisted-by: pi * ui : ダウンロードオプションのコメントを削り、チャットテンプレートをハイライト オプションパネルとそのチップが持っていた過剰なコメントの詳細は、自明でない理由(why)のみに縮小され、チャットテンプレートダイアログは平らな pre ブロックではなく、jinja として SyntaxHighlightedCode を介してレンダリングされます。 Assisted-by: pi * common: sidecar は .gguf ファイルのみ、mmproj/imatrix は単語全体として扱う sidecar のような名前の非 GGUF ファイル(quantization-mmproj-Q8_0.json)が mmproj として選択される事態や、モデル名の長い単語の中に sidecar の単語が含まれる事態(Phi-2-OmniMatrix.i1-Q4_K_M.gguf)は、モデルを落とします。 * ui: quant ごとにドラフト sidecar バッジを重複排除 ドラフト sidecar バッジは quant を除いた種類とリポジトリで重複排除されていたため、2 つの quant でドラフトがキャッシュされている場合にバッジが 1 つしか残らず、もう一方のメイン quant を削除しても sidecar を除去するバッジが見つかりませんでした。また、clusters メソッドがその上に配置された際に失われた getDownloadEntries のドキュメントを復元します。 Assisted-by: pi (zai-org/GLM-5.3-Flash) * ui: 不完全なダウンロード状態を採用し、paused-ids レジストリを廃止 ストアはローカル状態を持たない downloading エントリから未了のダウンロードを推論しており、別のタブで実行中のダウンロードを一時停止と誤認し、サーバーが拒否する再開を提示していました。一覧は現在 "incomplete" ステータスを運ぶため、採用は直接それに基づきます。 paused ids はもはや localStorage には残さない:サーバーは再起動をまたいでそれらを記憶しており、そもそもリロード後は進行状況のスナップショットが古くなっていたからです。古くなった localStorage キーは削除されます。 Assisted-by: pi (zai-org/GLM-5.3-Flash) * ui: 一時停止とキャンセルのカスケードを quantum 一致に限定 一時停止、再開、キャンセルはリポジトリのすべてのドラフト sidecar にカスケードしていましたが、削除は quantum が一致したものだけを対象にしていたため、Q4_0 のダウンロードをキャンセルすると、別の quant のメインに属する Q8_0 のドラフトまで止まってしまいました。現在はすべてのカスケードが quantum 一致のドラフトに対して作用し、削除が対象とするものと揃えています。 Assisted-by: pi (zai-org/GLM-5.3-Flash) * ui: 重複していたドラフトサブラインのマークアップを統合 ダウンロード済みと進行中の分岐で、同一の connector、label、badge のマークアップが繰り返されていました。条件付きの末尾を持つ 1 つのブロックで 2 つの状態を同期させるようにしました。 Assisted-by: pi (zai-org/GLM-5.3-Flash) * ui: サニタイズ後のモデルカード HTML から位置指定スタイルを除去 style 属性は KaTeX の出力のために許可されたままだったため、第三者のカードがアプリの上に固定オーバーレイを描画できてしまいました。サニタイズフックは position:fixed と position:absolute の値を除去し、KaTeX のレイアウトスタイルはそのまま残します。 Assisted-by: pi (zai-org/GLM-5.3-Flash) * ui: discover のマウント時のフェッチを 1 回だけ実行し、共有の repoOf ヘルパーを再利用 fetch() はマウントエフェクト内でローディングフラグを同期的に切り替えていたため、トグルのたびにフェッチが再実行され、失敗したカタログリポジトリへのリトライが無限に続いていました。現在はエフェクトがこの呼び出しをトラッキング対象外にしています。ローカルの repoOf のコピーと重複した services のインポートは共有ヘルパーに置き換えられました。 Assisted-by: pi (zai-org/GLM-5.3-Flash) * ui: spec-type マップをドラフト sidecar に限定 SPEC_TYPE には、インデックスとして使われることのない aux sidecar 用の空エントリが含まれていました。マップとコマンドコンポーネントは、キャストではなく draftBadgeOf ヘルパーを通じて badge をドラフト sidecar として型付けするようになりました。 Assisted-by: pi (zai-org/GLM-5.3-Flash) * ui: decision-model のタグと markdown キャッシュキーに名前を付与 decision-model のハブタグとパイプラインタグは、他のパイプラインタグの隣にある huggingface 定数に移動され、markdown 変換キャッシュのプレフィックスには、裸の 1 文字トークンの代わりに名前が付きました。 Assisted-by: pi (zai-org/GLM-5.3-Flash) * ui: discover 設定を 1 つの真偽チェックで読み取る 3 か所は !== false で、1 か所は Boolean() で設定を読み取っていました。現在は 4 か所すべてが同じ方法で読み取ります。 Assisted-by: pi (zai-org/GLM-5.3-Flash) * ui: モデルダイアログのビューをその enum と比較 テンプレートは 3 か所でビュー状態を 'manage' リテラルと比較していましたが、スクリプトは enum を使っていました。 Assisted-by: pi (zai-org/GLM-5.3-Flash) * nit: ドラフト sidecar badge の前の `+` を削除 * server: 未完了のダウンロードを incomplete として一覧表示 完了しなかったダウンロードは「downloading」と報告されており、これは実行中のダウンロードと同じステータスだったため、クライアントは実行中のダウンロードと停止したダウンロードを区別できませんでした。unfinished-downloads に記憶されたタグは、インスタンスなしで専用の「incomplete」ステータスの下に一覧表示されるようになりました。 Assisted-by: pi (zai-org/GLM-5.3-Flash) * server: -hf と同様にモデルをその sidecar とともにダウンロード 解決は master に戻りました。POST /models はモデルとともに取得する sidecar の種類(デフォルトは mmproj)を受け取り、ダウンロードの子プロセスはそれらを -hf フラグとして受け取るため、サーバーがファイルを選択します。/models は実モデルのみを、それぞれディスク上に持つ sidecar とともに一覧表示し、未完了のダウンロードは再起動をまたいで sidecar を保持します。停止されたダウンロードは次の試行のために部分的なファイルを保持し、DELETE はダウンロードが従うのと同じプランを通じてそれらを消去します。 * ui: sidecar をモデルのパラメータとしてダウンロード ダウンロードオプションはチップを保持しますが、チップはもはや sidecar タグを投稿しません:ストアはそれをモデルと取得する sidecar の種類にマップし、quant チップはそのドラフトを同じダウンロードに含め、ドラフト badge は各キャッシュ済みモデルが一覧する sidecar から取得されます。 サーバーは、キャッシュ済みモデルが再投稿されたときに欠けている sidecar を追加し、DELETE はキャッシュ済みモデルの単一の sidecar を削除します。 * ui : ドラフト badge でサーバーの sidecar 検索を模倣 サーバーは、重みと同じディレクトリにある大文字小文字を区別する `-` トークンによって sidecar を解決します。UI はこのトークンを緩くマッチしていたため、badge がサーバーが決して取得しないドラフトを提示することがありました。 Assisted-by: DeepSeek-V4.1-Flash * ui : モデルの sidecar の種類をそのダウンロードとともに投稿 ストアはモデルごとに 1 つのダウンロードを保持します:チップの種類はモデル自身の sidecar とともに送られ、ダウンロード行はもはや sidecar ごとの行に展開されません。ドラフト badge はまだ独自の quant を持たないため、キャッシュ済みモデルの sidecar がモデルの quant でラベル付けされることはありません。 Assisted-by: DeepSeek-V4.1-Flash * ui : quant のドラフトをそのダウンロードチップに結合 quant ごとに 1 つのチップ、その中にドラフトの badge を表示し、サイズは両方のファイルを含みます。ドラフトはサーバーが選ぶファイルです:同じディレクトリ、正確な quant、なければ最も近いビット深度。これにより 4-bit モデルは 16-bit ヘッドと組み合わせることができます。 Assisted-by: DeepSeek-V4.1-Flash * ui : マネージャーとセレクターからドラフトダウンロード行を削除 ダウンロードは再びモデルごとに 1 行になりました:ドラフトはそれに付随し、各行は sidecar エントリをモデルとペアにする代わりに、一覧からディスク上の sidecar を読み取ります。一時停止、再開、キャンセルはモデル自身のダウンロードに作用します。 Assisted-by: DeepSeek-V4.1-Flash * ui : discover のダウンロードリストをモデルごとに 1 行で維持 リストは、ダウンロード中のモデルごとに 1 行で始まり、その sidecar がサブラインとして表示されます。行はサーバーが解決できるドラフトの種類のみを badge 表示するため、badge がその検索で選ばれるファイルよりも長く残ることはありません。 Assisted-by: DeepSeek-V4.1-Flash * ui : discover のチップをダークモードで読みやすい状態に保つ メタデータチップ、チャットテンプレートボタン、View on Hugging Face リンクは、かすかな境界線のみでダイアログ背景の上に面がなかったため、ほとんど見えませんでした。これらは現在セカンダリではなくターシャリーボタンの面を使い、アイコンは size-* でサイズが決まるため、バリアントの基本ルールの影響を受けません。 Assisted-by: DeepSeek-V4.1-Flash * ui : ドラフトを保持する ダウンロードオプション経由 メインquantごとに1つのチップを配置し、そのチップにはドラフトのバッジと両ファイルを カバーするチップのダウンロード状態を表示します。ドラフトはオプトインのチェックボックスの 背後にあり、インラインでタイプを選択できます。また、各行は独自のコマンドを開き、その行の quantをピン留めしてドラフトタイプだけを指定するため、-hfd は廃止されました。 Assisted-by: DeepSeek-V4.1-Flash * ui : 詳細スケルトンを読み込み済みペインに合わせる 読み込み済みビューと同じルートのパディングとコンテナコンテキストにすることで、コンテナ クエリが同様に解決されます。ダウンロードオプションカードは自身ではなく各ブロックに パディングを与え、readmeにはカードを付け、カタログの段落の代わりに説明行を配置します。 Assisted-by: DeepSeek-V4.1-Flash * common : 削除されたサイドカーのpartialsを削除 サイドカーだけを削除すると、ダウンロードが blobs/ 内に予定していたサイドカーの .downloadInProgress ファイルが残ってしまいました。削除処理はダウンロードと同じプランを 通じてこれらを消去するようにし、テストでは完了したドラフトと未完了のドラフトを並べて 検証し、未完了のドラフトのpartialは消える一方、モデルは自身のファイルを保持します。 Assisted-by: DeepSeek-V4.1-Flash * server : ダウンロードが拒否される理由を明示 すでにダウンロード中のモデル、または実行中のモデルは「already exists」と応答していました。 今後はどちらであるかを示します。「is already downloading」、または「is running, unload it first」と応答し、いずれもresumableチェックの前に返します。ルーターのテストがこの2つを 検証します。 Assisted-by: DeepSeek-V4.1-Flash * ui : 1クリックにつき1回のダウンロードPOST 同じチップを素早く2回クリックすると2回POSTされ、2回目の応答は「already exists」でした。 ストアはモデルをpendingとして追跡し、pending中またはin-flight中は早期にreturnし、 サーバーが応答する前にin-flightとして読み取ることで、チップには即座にダウンロード状態が 表示されます。新しいクライアントテストは以下のフローを固定します:ダブルクリックにつき 1回のPOST、リストがモデルを報告した時点でチップがdownloadedと表示されること、 resume時にサイドカーが保持されること、cancelでダウンロード全体が破棄されること、 再読み込みで一時停止状態が復元されること。 Assisted-by: DeepSeek-V4.1-Flash * ui : 通常のダウンロード行の高さを others ダウンロード行の sub-lines ラッパーは、中身が空でも描画されていたため、そのパディングのせいで行が通常のものより高くなり、オーバーレイされるプログレスバーがその空の帯の中に配置されていました。現在は sub-lines がある場合にのみ描画され、セレクターと discover リストの両方で適用され、セレクターの行は隣接行と同じ電話用パディングを持つようになりました。 Assisted-by: DeepSeek-V4.1-Flash * ui : リポジトリのドラフトを一度だけバッジ表示 ロードされたモデルの args とキャッシュされたモデルのリスト表示は、同じドラフトを異なる言葉で報告します。片方はファイルの quant を含み、もう片方は種類のみを含むため、マージで両方が保持され、リポジトリの行に同じ種類が2回表示されていました。バッジは現在、種類ごとにマージされ、quant を知っている args 側が優先されます。テストでは実際のリポジトリの両方のソースを確認しています。 Assisted-by: DeepSeek-V4.1-Flash * server : プリセットまたは取得中のダウンロードのサイドカーを報告 プリセットが同名で指定しているモデルはプリセットとして登録されるため、そのドラフトは報告されず、どの行にもバッジが表示されませんでした。取得中のダウンロードも何も報告していませんでしたが、取得する種類の記録はそこに存在します。現在はそれらがプランより優先され、プランはプリセットの hf-repo を通じて解決され、models dir は対象外となります。 Assisted-by: DeepSeek-V4.1-Flash * ui : ダウンロード中のドラフトにバッジを付け、行からモデルを開く ダウンロード中のドラフトは、着地済みのドラフトと同様に、現在はモデル id にバッジを付け、ディスク上のドラフトはチェック済みの sub-line を保持します。行自体がモデルを開き、その横のステータススロットは一時停止または再開を行い、マネージャーはダウンロード行へのフォーカスを解決してパネルを開きます。 Assisted-by: DeepSeek-V4.1-Flash * common : partial のみが存在する削除済みサイドカーを報告 サイドカー単体の削除では partial パージの結果が破棄されていたため、.downloadInProgress blob としてのみ着地したサイドカーは false を返し、UI には再取得する理由がありませんでした。現在はパージの結果が戻り値に統合され、テストでは partial のみの削除をカバーしています。 Assisted-by: DeepSeek-V4.1-Flash * ui : 一時停止を無視する際の ダウンロードの POST がまだ送信中のまま サーバーが応答する前の段階ではチップはダウンロード中と表示されるため、素早い2回目のクリックで、まだ開始されていないモデルがアンロードされ、ストアは実行中でも一時停止中でもない状態になっていました。一時停止操作は、POST が保留中の間、フィードや一時停止マーカーに触れるより前に早期にリターンするようになりました。クライアントテストは POST を開いたまま保持し、ピン留めします。 Assisted-by: DeepSeek-V4.1-Flash * ui : 欠けているドラフトを独立したチップとして提案 ディスク上に既に存在するもののドラフトを持たないモデルには、ドラフトを追加する手段がありませんでした: 量子化チップがドラフトを担っていたため、両方のダウンロードと解釈されていたのです。量子化チップは自身の状態のみを保持するようになり、結合されたドラフトは一緒に取り込まれている間かディスク上にある場合にのみ表示され、ドラフトのないダウンロード済みの量子化モデルは、バッジ、サイズ、ダウンロードを備えた独立したチップを取得します。このチップはその種類を指定してモデルを POST するため、サーバーは既に存在するファイルを保持し、ドラフトのみを取得します。 Assisted-by: DeepSeek-V4.1-Flash * server : ディスク上のファイルによって一時停止中のサイドカーのダウンロードを一覧表示 ディスク上にありサイドカーのダウンロードが停止したモデルは未完了のレコードを保持しますが、一覧表示はそのレコードが計画している種類をあたかもディスク上にあるかのように報告していました: UI は一度も到着しなかったドラフトをチェックし、それを追加する手段を提示しませんでした。計画された種類は、ダウンロードが実行中の間だけ仮置きで表示されるようになりました。 * chore: コメントを整理 * server : HF リポジトリから解決できるモデルについてのみサイドカーを一覧表示 ローカルファイル上のプリセットには HF リポジトリがありませんが、一覧表示はその名前をリポジトリとして解決していました: 計画処理が無効なリポジトリ形式で例外を投げ、すべてのモデルについて GET /models が失敗していました。サイドカーは、プリセットが名指すリポジトリまたはキャッシュされたモデルが紐付くリポジトリから取得するようになり、ローカルファイルはサイドカーなしで一覧表示されます。 * common : ダウンロードキャンセルのリグレッションを修正 Signed-off-by: Adrien Gallouët * common : サイドカーを削除する際にモデルの部分ファイルを保持 Signed-off-by: Adrien Gallouët * server : 単一のサイドカーテーブルと未完了ダウンロードクラス @ggerganov からのレビューに対応。 サイドカーの種類は common/download 内の単一のテーブルに置かれ、各名前をそのダウンロード option と plan ファイルです。サーバーはこれを通じて検証、オプションの構築、キャッシュされた sidecar の一覧表示を行い、独自のリストを使わなくなります。 未完了のダウンロードは server_unfinished_downloads に移されます。これは固有のミューテックスとエントリごとの構造体を持つレコードで、server_models は unfinished_downloads_get と unfinished_downloads_remove を通じてこれらを公開します。 * common: 1 つの sidecar テーブルと、共有ファイルを保持する削除処理 解決、キャッシュされた一覧表示、削除は、単一の sidecar 種類テーブルに従います。つまり、各種類はファイルのキーワード、ドラフトかどうか、その option と plan ファイルとともに一度だけ宣言されます。サーバーは、受け入れる種類、デフォルトの sidecar、子フラグについて同じテーブルを読み取ります。 タグを削除しても、削除された quant にちなんだ名前の mmproj のように、別のキャッシュされたタグがまだ読み込むファイルは保持されます。単独で削除された sidecar は、それを解決するすべてのタグに対して削除されます。 未完了のダウンロードは、開始時にその部分的なファイルの正確なパスを記録します。削除ではハブに問い合わせることなくそれらを削除しますが、別の記録済みダウンロードも書き込んでいる部分ファイルは保持します。レコードは子プロセスが起動された時点で取得され、ファイルは models ロックの下で削除されるため、削除中に同じタグのダウンロードを開始することはできません。 * server: 古い部分ファイルの削除と、何も解決しないタグの拒否 ダウンロードを再記録する際には、新しい plan がもはや書き込まない以前のレコードの部分ファイル、たとえば古い hub リビジョンのものや、新しいリクエストで除外された sidecar のものが削除されます。 リポジトリのどのファイルにも解決されない投稿されたタグは、ダウンロード開始前に拒否されます。モデルの削除は、リロードが待機中にエントリを消去したかどうかにかかわらず、単一のパスに従います。 * server: ルーターのダウンロードテスト間の CI レースを修正 pytest ワーカーは 1 つの共有キャッシュ上で並列に実行されるため、ダウンロードテストが別のテストが直前に取得したファイルを見つけて進行状況が表示されないことがあり、あるいは別のテストが書き込んだ未完了ダウンロードのレコードから開始することがありました。現在は各ダウンロードテストがそれぞれ空のキャッシュ上で実行されます。 * server: 未知の名前に対する DELETE を拒否し、ダウンロードの判断を load() 内で行うように変更 モデルでも記録済みダウンロードでもない名前に対する DELETE は common_download_remove に渡り、タグがなければロード済みの quant やダウンロード途中のファイルを含むリポジトリキャッシュ全体を消去していました。このような名前は、以前のように見つからないものとして扱われます。 既存のエントリに対してダウンロードを行う POST は、ロックの外側でその状態をチェックしていたため、その間に同じモデルをロードするとインスタンスが kill されていました。チェックは現在 load() 内で、ロックを保持したまま、spawn の直前に実行されます。テスト用の偽のロード時間はモデルのロードにのみ適用されます。ダウンロードワーカーは何もロードしないためです。 * server: /models API に incomplete_sidecars を追加 キャッシュ済みモデルに追加された後、一時停止された sidecar はそのレコードを保持していましたが、一覧表示では完全なモデルのみが表示されるため、新しい UI では一時停止が失われていました。モデルのエントリには incomplete_sidecars が含まれるようになりました。これは、未完了のダウンロードがまだ書き込んでいない種類の一覧であり、その種類を指定した POST はダウンロードを再開し、その種類を指定した DELETE は部分的なデータを破棄します。 * common: レジュームが 416 を受け取った場合、保持していた部分的なデータを破棄 部分的なデータが試行間で保持されるようになったため、古い、または完了済みの partial があると、すべての再試行が同じ 416 で失敗します。 これを削除することで、次の試行がゼロからやり直せるようになります。 Signed-off-by: Adrien Gallouët * common: レジュームが 200 を受け取った場合、保持していた部分的なデータを破棄 range を無視するサーバーはレジュームに対して 200 を返し、保持されていた partial はその後、416 の場合と同じようにすべての試行を失敗させます。これも破棄するようにしました。これにより、次の試行は range なしでゼロからやり直します。 * server: 実行中のダウンロードと partial を共有するダウンロードを拒否 ファイル、mmproj、または最も近いビットで選ばれた mtp を共有する 2 つの quant のダウンロードは、同じ partial に追記し、バイトが interleave したファイル名を変更していました。実行中のダウンロードと同じ partial に書き込む計画を持つダウンロードは、そのダウンロードが完了するまで拒否されるようになりました。 * common: partial ダウンロードをレジュームする前に、保存された etag を確認 レジュームの前に、保存された etag と比較する サーバーが現在提供しているもの との部分的一致を確認します。Range ヘッダーが欠落しているか、または異なる場合は最初からやり直します。 これにより、再開されたダウンロードが、同じファイルの2つのバージョンにまたがるバイトを混在させることが決してありません。 Signed-off-by: Adrien Gallouët --------- Signed-off-by: Adrien Gallouët Co-authored-by: Pascal Co-authored-by: Adrien Gallouëtウェブサイト: - https://llama.app
証明書: - https://github.com/ggml-org/llama.cpp/attestations/56975123
macOS/iOSの場合: - macOS Apple Silicon(arm64)版 - macOS Apple Silicon(arm64、KleidiAI有効) 無効 - macOS Intel(x64)版 - iOS XCFramework
Linux: - Ubuntu x64(CPU) - Ubuntu arm64(CPU) - Ubuntu s390x(CPU) - Ubuntu x64(Vulkan) - Ubuntu arm64(Vulkan) - Ubuntu x64(CUDA 12) - CUDA 12.8 ライブラリ - Ubuntu x64(CUDA 13) - CUDA 13.4 ライブラリ - Ubuntu arm64(CUDA 13) - CUDA 13.4 ライブラリ - Ubuntu x64(ROCm 10.0) - Ubuntu x64(OpenVINO) - Ubuntu x64(SYCL FP32) - Ubuntu x64(SYCL FP16) - Linux arm64(Snapdragon: CPU、Adreno GPU、Hexagon NPU) - セットアップガイド
Android: - Android arm64(CPU) - Android arm64(Snapdragon: CPU、Adreno GPU、Hexagon NPU) - セットアップガイド
Windows: - Windows x64(CPU)向け - Windows arm64(CPU)向け - Windows arm64(OpenCL Adreno)向け - Windows x64(CUDA 12)向け - CUDA 12.4 DLL 群 - Windows x64(CUDA 13)向け - CUDA 13.4 DLL 群 - Windows arm64(CUDA 13)向け - CUDA 13.4 DLL 群 - Windows x64(Vulkan)向け - Windows arm64(Vulkan)向け - Windows x64(OpenVINO)向け - Windows x64(SYCL)向け - Windows x64(ROCm 10.0)向け
openEuler: - DISABLED - openEuler x86(310p)向け - openEuler x86(910b、ACL Graph)向け - openEuler aarch64(310p)向け - openEuler aarch64(910b、ACL Graph)向け
UI: - UI