Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

リモートモデルの読み込み

Litsea は、ローカルファイルに加えて HTTP/HTTPS URL からのモデル読み込みに対応しています。

対応する URI スキーム

スキーム説明
(なし)./model.modelローカルファイルパス(デフォルト)
file://file:///path/to/model明示的な File URI
http://http://example.com/modelHTTP URL
https://https://example.com/modelHTTPS URL

CLI での使用

echo "テスト" | litsea segment -l japanese https://example.com/japanese.model

ライブラリでの使用

#![allow(unused)]
fn main() {
let mut learner = AdaBoost::new(0.01, 100);

// Local file
learner.load_model_from_path(Path::new("./models/japanese.model"))?; // local, synchronous

// HTTP URL
learner.load_model("https://example.com/models/japanese.model").await?;
}

フィーチャーの有効化

0.6.0 以降、remote_model フィーチャーはオプトインです(ライブラリのデフォルトはローカル読み込みのみとし、依存関係のツリーをコンパクトに保っています)。CLI ではこのフィーチャーが有効化されているため、litsea segment https://... はそのまま動作します。ライブラリ利用者は以下が必要です:

litsea = { version = "0.13.0", features = ["remote_model"] }

実装の詳細

  • HTTP クライアント: reqwest + rustls(OpenSSL 依存なし)
  • カスタム User-Agent: Litsea/<version>
  • load_model メソッドが**非同期(async)**なのは、HTTP 読み込みに非同期ランタイムが必要なため
  • CLI では tokio が非同期ランタイムを提供

制限とエラー処理

  • 接続タイムアウト: 10 秒、リクエスト全体のタイムアウト: 60 秒 – 応答が止まったサーバーによってモデル読み込みが無期限にブロックされることはありません
  • モデルサイズの上限: 256 MiB。Content-Length がこれより大きい場合は本文を 読み込む前に拒否され、実際の本文サイズが上限を超えた場合も拒否されます
  • 不完全なダウンロード: サーバーが Content-Length を送信している場合、 受信した本文がそれより短ければ不完全なダウンロードとして報告されます
  • 2xx 以外のレスポンスは、HTTP ステータスとともにダウンロードエラーとして報告されます
  • モデルパーサーはさらに、末尾が欠けたファイルも拒否します(バイアス行を持たない モデルは読み込みに失敗します。モデルファイル形式 を参照)

WASM に関する注意事項

wasm32 ターゲットは、remote_model フィーチャーを無効にした状態でのみ CI で チェックされています (cargo check -p litsea --target wasm32-unknown-unknown --no-default-features):

  • wasm32 では HTTP/HTTPS の読み込みは現在サポートされていません – HTTP クライアントの構成が reqwest の ClientBuilder::connect_timeouttimeout を使用しており、reqwest の WASM クライアントがこれらを提供していない ため、remote_model フィーチャーはこのターゲットではビルドできません
  • ローカルファイルパスと file:// スキームも非対応です – ファイルシステムへのアクセスが利用できないため、read_file_bytesUnsupported エラーを返します

したがって wasm32 では、ホスト環境から供給されたモデルのバイト列を load_model_from_reader に渡すなど、別の手段でモデルを与える必要があります。