Transformers documentation

カーネル

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

カーネル

このページでは、カーネル設定ユーティリティについて説明します。

kernelize

transformers.kernelize

< >

( model: PreTrainedModelmode: Mode | None = None )

kernelize が検出して置き換えられるように、一時的に隠しカーネルのラッパーを登録します。

KernelConfig

class transformers.KernelConfig

< >

( kernel_mapping = Noneuse_local_kernel = Falseinherit_mapping = True )

カーネル設定クラス。このクラスは、モデルのカーネルマッピングを設定するために使用されます。

create_compatible_mapping

< >

( modelcompile = False )

kernel_mapping の単純な形式: { “RMSNorm”: (“kernels-community/layer_norm:LlamaRMSNorm”, {“version”: 1, “trust_remote_code”: True}), … },

またはローカルパスの場合:

{ “RMSNorm”: “/home/user/liger_kernels:LigerRMSNorm”, … },

ネストされたマッピングに:

{ “RMSNorm”: { “cuda”: { Mode.INFERENCE: LayerRepository( repo_id=“kernels-community/layer_norm”, layer_name=“LlamaRMSNorm”, version=1, trust_remote_code=True, ) } } }

またはローカルパスの場合:

{ “RMSNorm”: { “cuda”: { Mode.INFERENCE: LocalLayerRepository( repo_path=Path(“/home/user/liger_kernels”), layer_name=“LigerRMSNorm”, ) } } }

kernels ライブラリと互換性があります。

指定されていない場合、デバイスはモデルのパラメータから推論されます。 Mode はモデルの学習状態から推論されます。

sanitize_kernel_mapping

< >

( model )

パラメータ

  • model — 登録された kernel_layer_name 属性のチェック対象となるモジュールを持つモデルインスタンス。

例外

ValueError

  • ValueError — If a layer_name is not registered in the model, if a device is not supported, or if a repo_name is not a valid ‘org/repo:layer_name’ string.

kernel_mappingを検証し、以下を満たすことを確認します:

  1. マッピング内の各 layer_name はモデルに登録されています(つまり、モデルには kernel_layer_name が一致するモジュールが含まれています)。
  2. 各カーネルの値は
    • ‘org/repo:layer_name’ 形式の文字列、または同じ文字列と {"revision"/"version/trust_remote_code": …} の辞書を含むタプル
    • または、上記と同様にサポートされているデバイスタイプをこれらの値にマッピングする dict。
  3. dict 内の各デバイスキーは、“cuda”、“rocm”、“xpu”、“npu”、“neuron”、“tpu”、“mps” のいずれかです。
  4. 各 trust_remote_code キーは bool 型である必要があります。
  5. 明示的に渡された場合、各リビジョンまたはバージョンキーは互いに排他的に存在する必要があります。
  6. 各 repo_name は、‘org/repo:layer_name’ 形式(つまり、スラッシュとコロンを両方含む文字列)の、有効なリポジトリ名およびレイヤー名です。
  7. ローカルパスが検出された場合、その形式は‘/abs/path:layer_name’である必要があります。ここで、絶対パスはカーネルリポジトリを指します。例: “/home/user/layer_norm”。
Update on GitHub