3

これは長時間の撮影ですが、私は大量のword2vecモデルを効率よく生産に持ち込む方法をいくつかアドバイスしたいと思っています環境。Word2Vecモデルをプロダクションサービスに効率的に持ち込む

私たちは300のディメンションを持つ訓練されたw2vモデルの範囲を持っています。根底にあるデータ - POSタグ付き単語を持つ巨大なコーパス。これらのモデルは非常に大きくなりました。私たちは現在、インフラストラクチャーに高すぎる価格を支払うことなくユーザーにこれらを公開する効果的な方法を模索しています。

明らかに、ボキャブラリのサイズをよりよく制御しようとすることに加えて、特徴ベクトルの次元削減はオプションになります。誰もがその周りの出版物を知っていますか?これがモデル品質にどのように影響するか、そしてこれを最も良く測定するにはどうすればよいでしょうか?

もう1つの選択肢は、各ボキャブラリーワードに最上位の最も類似したワードを事前に計算し、ルックアップテーブルを提供することです。モデルのサイズがそれほど大きいので、これも現在非常に非効率的です。 n x n-1から必要な距離計算の回数を減らすために使用できるヒューリスティックがありますか?

ありがとうございました!

答えて

1

高次元空間における類似検索のための事前索引付け技術があり、これは最近隣発見をスピードアップすることができるが、通常絶対精度を犠牲にして行われる。 (インデックスにはさらにメモリが必要です。)

例はANNOY libraryです。 gensimプロジェクトにはdemo notebook showing its use with Word2Vecが含まれています。

Word2Vecモデルでは、ちょうど16ビット(32ビットではなく)の浮動小数点数を使っていくつかの実験を行いました。それはアイドル状態のメモリを節約し、最近傍のトップNの結果はほとんど変化しなかった。しかし、おそらく、32ビット浮動小数点へのアップコンバートの一部が、1対1の距離計算中にまだ発生していたため、実際には速度が低下しました。 (これは、各距離計算が一時的なメモリ拡張を引き起こし、アイドル状態の節約を相殺する可能性があることを示唆しています)。これは簡単な修正ではありませんが、ここでのさらなる研究 - おそらくfloat16配列演算多分、50%のモデルサイズの節約、同等またはそれ以上のスピードを意味するかもしれない。

多くのアプリケーションでは、最も頻度の低い単語を破棄しても、訓練前に実行しても残りのベクトルの品質を向上させることはできません。 gensimを含む多くの実装では、単語ベクトル配列を最も頻繁な順序で並べ替えるため、メモリの節約のために配列の末尾を破棄したり、計算を高速化するためにmost_similar()を最初のNエントリに制限したりできます。

ボキャブラリサイズを最小限にすると、フルセットがRAMにあることを確認し、(標準的な)フルスイープ距離計算の間にスワッピングがトリガされないようにしたいとします。マルチコア・マシン上のWebサービスのように、同じベクトル・セットからの応答を処理するために複数のプロセスが必要な場合、gensimのメモリー・マッピング操作では、各プロセスが独自のベクトルの冗長コピーをロードできなくなります。このテクニックの説明はanswer about speeding gensim Word2Vec loading timeにあります。

最後に、より大きい語彙の上位N近傍を事前計算するのは時間がかかり、メモリを大量に消費しますが、アクセスパターンによって一部のトークンが他のトークンよりもはるかに多くチェックされるような場合は、最近またはMで最も頻繁に要求されるトップNは、知覚されるパフォーマンスを大幅に向上させることができます。頻繁に要求されないネイバーリストでは、他のすべてのトークンとの完全な距離計算が必要です。

+1

ANNOYライブラリと関連する質問への詳細な回答、アイデア、リンクをありがとうございました!残念ながら、私たちはProductionでJavaバインドされており、Pythonサービスを実行することはできません。私はしかし、float16の操作のアイデアを調査します。私たちの目的のために、私たちは実際には低頻度の類似単語に非常に興味があるので、フィルタリングは躊躇しています。私はいくつかのアイデアを試してみることにしました。私はこの論文で見つけました:https://rd.springer.com/chapter/10.1007/978-3-319-30671-1_15。モデルの品質の変化を評価するために独自の評価データセットを設定する必要があると私は考えています。 – Matthias

関連する問題