Transformers documentation

カーネル

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