「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Entropix: 推論パフォーマンスを最大化するためのサンプリング手法

Entropix: 推論パフォーマンスを最大化するためのサンプリング手法

2024 年 11 月 7 日に公開
ブラウズ:847

Entropix: 推論パフォーマンスを最大化するためのサンプリング手法

Entropix README によると、Entropix はエントロピー ベースのサンプリング方法を使用しています。この記事では、エントロピーとヴァレントロピーに基づく具体的なサンプリング手法について説明します。

エントロピーとバレントロピー

エントロピーとヴァレントロピーについて説明することから始めましょう。これらはサンプリング戦略を決定する際の重要な要素であるためです。

エントロピ

情報理論では、エントロピーは確率変数の不確実性の尺度です。確率変数 X のエントロピーは次の方程式で定義されます:

Entropix: Sampling Techniques for Maximizing Inference Performance

  • X: 離散確率変数。
  • x_i: X の i 番目の可能な状態。
  • p(x_i): 状態 x_i の確率。

確率分布が一様な場合、エントロピーは最大になります。逆に、特定の状態が他の状態よりもはるかに可能性が高い場合、エントロピーは減少します。

ヴァレントロピー

ヴァレントロピーはエントロピーと密接に関係しており、情報内容の変動性を表します。情報量 I(X)、エントロピー H(X)、確率変数 X の分散を考慮して、バレントロピー V E(X) は次のように定義されます。

Entropix: Sampling Techniques for Maximizing Inference Performance

確率 p(x_i) が大きく変化する場合、ヴァレントロピーは大きくなります。確率が均一である場合、つまり分布のエントロピーが最大である場合、または 1 つの値の確率が 1 で他のすべての値の確率が 0 である場合、この値は小さくなります。

サンプリング方法

次に、エントロピー値とバレントロピー値に基づいてサンプリング戦略がどのように変化するかを見てみましょう。

Entropix: Sampling Techniques for Maximizing Inference Performance

1. 低エントロピー、低ヴァレントロピー → Argmax

このシナリオでは、特定のトークンの予測確率が他のトークンよりもはるかに高くなります。次のトークンはほぼ確実なので、Argmaxを使用します。

if ent 



コードリンク

2. 低エントロピー、高ヴァレントロピー → 分岐

これは、ある程度の自信はあるものの、複数の実行可能なオプションが存在する場合に発生します。この場合、Branch 戦略を使用して、複数の選択肢からサンプリングし、最良の結果を選択します。

elif ent  5.0:
    temp_adj = 1.2   0.3 * interaction_strength
    top_k_adj = max(5, int(top_k * (1   0.5 * (1 - agreement))))
    return _sample(logits, temperature=min(1.5, temperature * temp_adj), top_p=top_p, top_k=top_k_adj, min_p=min_p, generator=generator)

コードリンク

この戦略は「分岐」と呼ばれていますが、現在のコードはサンプリング範囲を調整して単一のパスを選択しているようです。 (誰かがより多くの洞察を持っている場合は、さらなる説明をいただければ幸いです。)

3. 高エントロピー、低ヴァレントロピー → CoT または一時停止トークンの挿入

次のトークンの予測確率がかなり均一で、次のコンテキストが不確実であることを示す場合、曖昧さを解決するために 明確化トークンが挿入されます。

elif ent > 3.0 and vent 



コードリンク

4. 高エントロピー、高ヴァレントロピー → リサンプル

この場合、複数のコンテキストがあり、次のトークンの予測確率は低くなります。 リサンプリング戦略は、より高い温度設定とより低いトップピークで使用されます。

elif ent > 5.0 and vent > 5.0:
    temp_adj = 2.0   0.5 * attn_vent
    top_p_adj = max(0.5, top_p - 0.2 * attn_ent)
    return _sample(logits, temperature=max(2.0, temperature * temp_adj), top_p=top_p_adj, top_k=top_k, min_p=min_p, generator=generator)

コードリンク

中級の場合

上記の条件がいずれも満たされない場合、適応サンプリングが実行されます。複数のサンプルが取得され、エントロピー、ヴァレントロピー、およびアテンション情報に基づいて最良のサンプリング スコアが計算されます。

else:
    return adaptive_sample(
        logits,
        metrics,
        gen_tokens,
        n_samples=5,
        base_temp=temperature,
        base_top_p=top_p,
        base_top_k=top_k,
        generator=generator
    )

コードリンク


参考文献

  • Entropix リポジトリ
  • Entropix は何をしているのですか?
リリースステートメント この記事は次の場所に転載されています: https://dev.to/m_sea_bass/entropix-sampling-techniques-for-maximizing-inference-performance-2hgc?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3