Accelerate documentation

ユーティリティ関数とクラス

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

and get access to the augmented documentation experience

to get started

ユーティリティ関数とクラス

以下に、ユースケース別に分類された、🤗 Accelerate が提供するさまざまなユーティリティ関数を紹介します。

定数

🤗 Accelerate全体で参照用に使用される定数

Accelerator.save_state() を利用する際に使用される定数は以下の通りです。

utils.MODEL_NAME: "pytorch_model" utils.OPTIMIZER_NAME: "optimizer" utils.RNG_STATE_NAME: "random_states" utils.SCALER_NAME: "scaler.pt utils.SCHEDULER_NAME: "scheduler

Accelerator.save_model() を利用する際に使用される定数は以下の通りです。

utils.WEIGHTS_NAME: "pytorch_model.bin" utils.SAFE_WEIGHTS_NAME: "model.safetensors" utils.WEIGHTS_INDEX_NAME: "pytorch_model.bin.index.json" utils.SAFE_WEIGHTS_INDEX_NAME: "model.safetensors.index.json"

データクラス

これらは🤗 Accelerate全体で使用される基本的なdataclassであり、パラメータとして渡すことができます。

スタンドアロン

これらは、使用されている分散システムの種類などのチェックに使用される独立したデータクラスです

クラス accelerate.utils.ComputeEnvironment

< >

( *values )

計算環境の型を表します。

値:

  • LOCAL_MACHINE — プライベート/カスタムクラスタのハードウェア。
  • AMAZON_SAGEMAKER — 計算環境として Amazon SageMaker を使用します。

クラス accelerate.DistributedType

< >

( *values )

分散環境のタイプを表します。

値:

  • NO — 分散環境ではなく、単一プロセスのみです。
  • MULTI_CPU — 複数のCPUノードに分散配置します。
  • MULTI_GPU — 複数GPUに分散配置。
  • MULTI_MLU — 複数のMLUに分散配置。
  • MULTI_SDAA — 複数のSDAAに分散配置。
  • MULTI_MUSA — 複数のMUSA上で分散実行。
  • MULTI_NPU — 複数のNPUに分散配置。
  • MULTI_XPU — 複数のXPUに分散配置。
  • MULTI_HPU — 複数のHPUに分散配置。
  • MULTI_NEURON — 複数の Neuron コアに分散配置されます。
  • DEEPSPEED — DeepSpeed の使用。
  • FSDP — Fully Sharded Data Parallelism (FSDP) の使用
  • XLA — TorchXLAの使用。
  • MEGATRON_LM — Megatron-LM の使用。

クラス accelerate.utils.DynamoBackend

< >

( *values )

dynamo バックエンドを表します(https://pytorch.org/docs/stable/torch.compiler.htmlを参照)。

値:

  • いいえ — torch dynamo は使用しないでください。
  • EAGER — PyTorchを使用して抽出されたGraphModuleを実行します。TorchDynamoの問題のデバッグに非常に役立ちます。
  • AOT_EAGER — コンパイラを使用せずに AotAutograd を利用します。つまり、AotAutograd によって抽出された forward グラフと backward グラフに対して、PyTorch の eager モードのみを使用します。これはデバッグに有用ですが、高速化が得られる可能性は低いです。
  • INDUCTOR — コード生成されたTritonカーネルを活用して、AotAutogradとcudagraphsとともにTorchInductorバックエンドを使用します。詳細はこちら
  • AOT_TS_NVFUSER — AotAutograd/TorchScript 対応の nvFuser。詳細はこちら
  • NVPRIMS_NVFUSER — PrimTorch 対応の nvFuser。詳細はこちら
  • CUDAGRAPHS — AotAutograd による cudagraphs。詳細はこちら
  • OFI — Torchscriptのoptimize_for_inferenceを使用します。推論のみに対応しています。詳細はこちら
  • FX2TRT — 推論の最適化にNvidia TensorRTを使用します。推論のみに対応しています。詳細はこちら
  • ONNXRT — CPU/GPUでの推論にONNXRTを使用します。推論のみに対応しています。詳細はこちら
  • TENSORRT — ONNXRT を使用して TensorRT を実行し、推論の最適化を行います。詳細はこちら
  • AOT_TORCHXLA_TRACE_ONCE — 学習用に、TorchDynamo最適化を備えたPytorch/XLAを使用します。詳細はこちら
  • TORCHXLA_TRACE_ONCE — 推論用に、TorchDynamo最適化を適用したPytorch/XLAを使用します。詳細はこちら
  • TVM — Apache TVM を推論の最適化に使用します。詳細はこちら
  • HPU_BACKEND — 推論の最適化に HPU バックエンドを使用します。
  • NEURON — Trainium/Inferentia 用の AWS Neuron バックエンドを使用します。

クラス accelerate.utils.LoggerType

< >

( *values )

サポートされている実験トラッカーの種類を表します

値:

  • ALL — 環境内で利用可能かつサポートされているすべてのトラッカー
  • TENSORBOARD — 実験トラッカーとしてのTensorBoard
  • WANDB — wandb を実験トラッカーとして使用
  • TRACKIO — 実験トラッカーとしてのtrackio
  • COMETML — comet_ml を実験トラッカーとして
  • MLFLOW — 実験トラッカーとしての mlflow
  • CLEARML — clearml を実験トラッカーとして
  • DVCLIVE — dvclive を実験トラッカーとして
  • SWANLAB — 実験トラッカーとしてのswanlab

クラス accelerate.utils.PrecisionType

< >

( *values )

浮動小数点数値に使用される精度の種類を表します

値:

  • いいえ — 完全精度(FP32)を使用
  • FP16 — 半精度を使用
  • BF16 — brain floating point 精度を使用

クラス accelerate.utils.RNGType

< >

( *values )

クラス accelerate.utils.SageMakerDistributedType

< >

( *values )

分散環境のタイプを表します。

値:

  • NO — 分散環境ではなく、単一プロセスのみです。
  • DATA_PARALLEL — sagemakerの分散データ並列性を使用します。
  • MODEL_PARALLEL — sagemaker分散モデル並列性を使用します。

Kwargs

これらは、Accelerate が内部で処理する、PyTorch エコシステム全体における特定のインタラクションに関する設定可能な引数です。

class accelerate.AutocastKwargs

< >

( enabled: bool = Truecache_enabled: bool | None = None )

このオブジェクトをAcceleratorで使用して、torch.autocastの動作をカスタマイズします。各引数に関する詳細は、このコンテキストマネージャーのドキュメントを参照してください。

例:

from accelerate import Accelerator
from accelerate.utils import AutocastKwargs

kwargs = AutocastKwargs(cache_enabled=True)
accelerator = Accelerator(kwargs_handlers=[kwargs])

クラス accelerate.DistributedDataParallelKwargs

< >

( dim: int = 0broadcast_buffers: bool = Truebucket_cap_mb: int = 25find_unused_parameters: bool = Falsecheck_reduction: bool = Falsegradient_as_bucket_view: bool = Falsestatic_graph: bool = Falsecomm_hook: DDPCommunicationHookType = <DDPCommunicationHookType.NO: 'no'>comm_wrapper: typing.Literal[<DDPCommunicationHookType.NO: 'no'>, <DDPCommunicationHookType.FP16: 'fp16'>, <DDPCommunicationHookType.BF16: 'bf16'>] = <DDPCommunicationHookType.NO: 'no'>comm_state_option: dict = <factory> )

このオブジェクトをAcceleratorで使用して、モデルがtorch.nn.parallel.DistributedDataParallelでラップされる方法をカスタマイズします。各引数に関する詳細は、このwrapperのドキュメントを参照してください。

例:

from accelerate import Accelerator
from accelerate.utils import DistributedDataParallelKwargs

kwargs = DistributedDataParallelKwargs(find_unused_parameters=True)
accelerator = Accelerator(kwargs_handlers=[kwargs])

クラス accelerate.GradScalerKwargs

< >

( init_scale: float = 65536.0growth_factor: float = 2.0backoff_factor: float = 0.5growth_interval: int = 2000enabled: bool = True )

このオブジェクトをAcceleratorで使用して、混合精度の動作、特に使用されるtorch.amp.GradScalerまたはtorch.cuda.amp.GradScalerの作成方法をカスタマイズします。各引数に関する詳細は、このscalerのドキュメントを参照してください。

例:

from accelerate import Accelerator
from accelerate.utils import GradScalerKwargs

kwargs = GradScalerKwargs(backoff_factor=0.25)
accelerator = Accelerator(kwargs_handlers=[kwargs])

クラス accelerate.InitProcessGroupKwargs

< >

( backend: str | None = 'nccl'init_method: str | None = Nonetimeout: datetime.timedelta | None = None )

このオブジェクトをAcceleratorで使用して、分散プロセスの初期化をカスタマイズします。各引数に関する詳細は、このメソッドのドキュメントを参照してください。

注: timeoutがNoneに設定されている場合、デフォルト値はbackendの設定に基づいて決定されます。

from datetime import timedelta
from accelerate import Accelerator
from accelerate.utils import InitProcessGroupKwargs

kwargs = InitProcessGroupKwargs(timeout=timedelta(seconds=800))
accelerator = Accelerator(kwargs_handlers=[kwargs])

クラス accelerate.utils.KwargsHandler

< >

( )

to_kwargs()メソッドを実装するdataclass用の内部ミックスインです。

to_kwargs

< >

( )

このクラスのデフォルト値と異なる値を持つ属性を格納した辞書を返します。

プラグイン

これらはAcceleratorオブジェクトに渡すことができるプラグインです。ドキュメントの他の場所で定義されていますが、利便性のため、ここではすべて確認できます:

class accelerate.DeepSpeedPlugin

< >

( hf_ds_config: Any = Nonegradient_accumulation_steps: int = Nonegradient_clipping: float = Nonezero_stage: int = Noneis_train_batch_min: bool = Trueoffload_optimizer_device: str = Noneoffload_param_device: str = Noneoffload_optimizer_nvme_path: str = Noneoffload_param_nvme_path: str = Nonezero3_init_flag: bool = Nonezero3_save_16bit_model: bool = Nonetransformer_moe_cls_names: str = None )

パラメータ

  • hf_ds_config (Any、デフォルトはNone) — DeepSpeed設定ファイルへのパス、dict、またはaccelerate.utils.deepspeed.HfDeepSpeedConfigクラスのオブジェクト。
  • gradient_accumulation_steps (int、デフォルトはNone) — オプティマイザの状態を更新する前に勾配を累積するステップ数。設定されていない場合、Acceleratorの値が直接使用されます。
  • gradient_clipping (float、デフォルトはNone) — 指定した値で勾配クリッピングを有効にします。
  • zero_stage (int、デフォルトはNone) — 選択肢は 0、1、2、3 です。デフォルト値は環境変数から取得されます。
  • is_train_batch_min (bool、デフォルトは True) — train と eval の両方の dataloader が指定されている場合、train_batch_size を決定します。
  • offload_optimizer_device (str、デフォルトは None) — 選択可能なオプションは none|cpu|nvme です。ZeRO Stages 2 と 3 の場合にのみ適用されます。
  • offload_param_device (str、デフォルトはNone) — 選択肢は none|cpu|nvme です。ZeRO Stage 3 の場合にのみ適用されます。
  • offload_optimizer_nvme_path (str、デフォルトはNone) — 選択可能なオプションは /nvme|/local_nvme です。ZeRO Stage 3でのみ適用されます。
  • offload_param_nvme_path (str、デフォルトは None) — 選択可能なオプションは /nvme|/local_nvme です。ZeRO Stage 3 の場合にのみ適用されます。
  • zero3_init_flag (bool、デフォルトはNone) — 16ビットモデルを保存するかどうかを示すフラグ。ZeRO Stage-3でのみ適用されます。
  • zero3_save_16bit_model (bool、デフォルトはNone) — 16ビットモデルを保存するかどうかを示すフラグ。ZeRO Stage-3でのみ適用されます。
  • transformer_moe_cls_names (str、デフォルトは None) — Transformers の MoE レイヤーのクラス名をカンマ区切りで指定します(大文字と小文字を区別します)。例えば、MixtralSparseMoeBlock、Qwen2MoeSparseMoeBlock、JetMoEAttention、JetMoEBlock などです。

このプラグインは、DeepSpeed を統合するために使用されます。

deepspeed_config_process

< >

( prefix = ''mismatches = Noneconfig = Nonemust_match = True**kwargs )

kwargs の値で DeepSpeed の設定を処理します。

select

< >

( _from_accelerator_state: bool = False )

現在のdeepspeedプラグイン設定を使用するようにHfDeepSpeedWeakrefを設定します

クラス accelerate.FullyShardedDataParallelPlugin

< >

( fsdp_version: int = Nonesharding_strategy: str | ForwardRef('torch.distributed.fsdp.ShardingStrategy') = Nonereshard_after_forward: str | ForwardRef('torch.distributed.fsdp.ShardingStrategy') | bool = Nonebackward_prefetch: str | ForwardRef('torch.distributed.fsdp.BackwardPrefetch') | None = Nonemixed_precision_policy: dict | str | ForwardRef('torch.distributed.fsdp.MixedPrecision') | ForwardRef('torch.distributed.fsdp.MixedPrecisionPolicy') | None = Noneauto_wrap_policy: typing.Callable | typing.Literal['transformer_based_wrap', 'size_based_wrap', 'no_wrap'] | None = Nonecpu_offload: bool | ForwardRef('torch.distributed.fsdp.CPUOffload') | ForwardRef('torch.distributed.fsdp.CPUOffloadPolicy') = Noneignored_modules: collections.abc.Iterable[torch.nn.Module] | str | None = Nonestate_dict_type: str | ForwardRef('torch.distributed.fsdp.StateDictType') = Nonestate_dict_config: ForwardRef('torch.distributed.fsdp.FullStateDictConfig') | ForwardRef('torch.distributed.fsdp.ShardedStateDictConfig') | None = Noneoptim_state_dict_config: ForwardRef('torch.distributed.fsdp.FullOptimStateDictConfig') | ForwardRef('torch.distributed.fsdp.ShardedOptimStateDictConfig') | None = Nonelimit_all_gathers: bool = Trueuse_orig_params: bool | None = Noneparam_init_fn: typing.Callable[[torch.nn.Module], NoneType] | None = Nonesync_module_states: bool | None = Noneforward_prefetch: bool = Noneactivation_checkpointing: bool = Noneactivation_checkpointing_offload: bool = Nonecpu_ram_efficient_loading: bool = Nonetransformer_cls_names_to_wrap: list[str] | None = Nonemin_num_params: int | None = None )

パラメータ

  • fsdp_version (int、デフォルトは 1) — 使用する FSDP のバージョンです。デフォルトは 1 です。2 に設定すると、ランチャーは設定が FSDP2 形式に変換されていることを期待します。
  • sharding_strategy (Union[str, torch.distributed.fsdp.ShardingStrategy]、デフォルトは 'FULL_SHARD') — 使用するシャーディング戦略です。str または torch.distributed.fsdp.fully_sharded_data_parallel.ShardingStrategy のインスタンスである必要があります。reshard_after_forward に置き換えられるため、非推奨です。
  • reshard_after_forward (Union[str, torch.distributed.fsdp.ShardingStrategy, bool]、fsdp_version=1 の場合は 'FULL_SHARD'、fsdp_version=2 の場合は True がデフォルト) — 使用するシャーディング戦略です。fsdp_version が 2 に設定されている場合は bool 型、それ以外の場合は str または torch.distributed.fsdp.fully_sharded_data_parallel.ShardingStrategy のインスタンスである必要があります。
  • backward_prefetch (Union[str, torch.distributed.fsdp.BackwardPrefetch]、デフォルトは 'NO_PREFETCH') — 使用するバックワードプリフェッチ戦略です。str または torch.distributed.fsdp.fully_sharded_data_parallel.BackwardPrefetch のインスタンスのいずれかである必要があります。
  • mixed_precision_policy (Optional[Union[dict, str, torch.distributed.fsdp.MixedPrecision, torch.distributed.fsdp.MixedPrecisionPolicy]]、デフォルトは None) — FullyShardedDataParallel による混合精度学習を有効にするための設定です。dict を渡す場合は、param_dtype、reduce_dtype、buffer_dtype というキーを持つ必要があります。fsdp_version が 2 に設定されている場合、torch.distributed.fsdp.MixedPrecisionPolicy のインスタンスを渡すこともできます。str を渡す場合は、fp8、fp16、bf16、fp32 のいずれかの値である必要があり、param_dtype、reduce_dtype、buffer_dtype を設定するために使用されます。
  • auto_wrap_policy (Optional(Union[Callable, Literal["transformer_based_wrap", "size_based_wrap", "no_wrap"]]), defaults to NO_WRAP) -- A callable or string specifying a policy to recursively wrap layers with FSDP. If a string, it must be one of transformer_based_wrap, size_based_wrap, or no_wrap. See torch.distributed.fsdp.wrap.size_based_wrap_policy` for a direction on what it should look like.
  • cpu_offload (Union[bool, torch.distributed.fsdp.CPUOffload, torch.distributed.fsdp.CPUOffloadPolicy]、デフォルトはFalse) — パラメータをCPUにオフロードするかどうか。bool、またはfsdp_versionが2に設定されている場合はtorch.distributed.fsdp.fully_sharded_data_parallel.CPUOffloadまたはtorch.distributed.fsdp.fully_sharded_data_parallel.CPUOffloadPolicyのインスタンスである必要があります。
  • ignored_modules (Optional[Union[Iterable[torch.nn.Module], str]]、デフォルトはNone) — FSDPでラップする際に無視するモジュールのリストです。文字列を渡す場合、正規表現のfullmatchを使用してモジュール名に一致させます。fsdp_versionが2に設定されている場合、モジュールはパラメータに変換されて使用されます。
  • state_dict_type (Union[str, torch.distributed.fsdp.StateDictType]、デフォルトは 'FULL_STATE_DICT') — 使用する State dict のタイプです。文字列の場合、full_state_dict、local_state_dict、または sharded_state_dict のいずれかである必要があります。
  • state_dict_config (Optional[Union[torch.distributed.fsdp.FullStateDictConfig, torch.distributed.fsdp.ShardedStateDictConfig]、デフォルトはNone) — 使用する state dict の設定です。指定されない場合、state_dict_type に基づいて決定されます。
  • optim_state_dict_config (Optional[Union[torch.distributed.fsdp.FullOptimStateDictConfig, torch.distributed.fsdp.ShardedOptimStateDictConfig]、デフォルトはNone) — 使用する Optim state dict の設定です。指定されない場合は、state_dict_typeに基づいて決定されます。
  • limit_all_gathers (bool、デフォルトはTrue) — FSDPがCPUスレッドを明示的に同期させ、進行中のall-gatherが過多になるのを防ぐかどうかを指定します。このboolは、all-gatherをスケジュールするシャーディング戦略にのみ影響します。これを有効にすると、CUDA mallocのリトライ回数を減らすのに役立つ場合があります。
  • use_orig_params (bool、デフォルトはFalse) — オプティマイザーに元のパラメータを使用するかどうか。
  • param_init_fn (Optional[Callable[[torch.nn.Module], None]、デフォルトは None) — メタデバイス上に現在存在するモジュールを実際のデバイスに初期化する方法を指定する Callable[torch.nn.Module] -> None です。 sync_module_states が True の場合にのみ適用されます。デフォルトでは、モジュールに対して to_empty を呼び出す lambda です。
  • sync_module_states (bool、デフォルトはFalse) — 個別にラップされた各 FSDP ユニットが、初期化後にすべてのランクでモジュールのパラメータが同一であることを保証するために、ランク 0 からモジュールのパラメータをブロードキャストすべきかどうかを指定します。cpu_ram_efficient_loading がTrueの場合を除き、デフォルトはFalseです。その場合は、強制的に有効化されます。
  • forward_prefetch (bool、デフォルトはFalse) — フォワードパスの実行中に、FSDP が次の all-gather を明示的にプリフェッチするかどうか。静的グラフでのみ使用してください。
  • activation_checkpointing (bool、デフォルトはFalse) — 特定の層のアクティベーションをクリアし、バックワードパス時に再計算することでメモリ使用量を削減する技術です。実質的に、追加の計算時間を引き換えにメモリ使用量を削減します。
  • cpu_ram_efficient_loading (bool、デフォルトはNone) — True の場合、最初のプロセスのみが事前学習済みモデルのチェックポイントをロードし、その他のすべてのプロセスは重みが空になります。Transformers の場合にのみ適用されます。これを使用する場合は、sync_module_states を True にする必要があります。
  • transformer_cls_names_to_wrap (Optional[List[str]]、デフォルトは None) — ラップする Transformer レイヤーのクラス名のリストです。auto_wrap_policy が transformer_based_wrap の場合にのみ適用されます。
  • min_num_params (Optional[int]、デフォルトは None) — モジュールをラップするために必要な最小のパラメータ数です。auto_wrap_policy が size_based_wrap の場合にのみ適用されます。

このプラグインは、フルシャードデータ並列性を有効にするために使用されます。

set_auto_wrap_policy

< >

( model )

modelが与えられた場合、渡されたポリシーに基づいてauto_wrap_policyを作成し、transformer_cls_to_wrapを使用できるかどうかを判断します。

set_mixed_precision

< >

( mixed_precisionbuffer_autocast = Falseoverride = False )

FSDPの混合精度ポリシーを設定します

set_state_dict_type

< >

( state_dict_type = None )

StateDictTypeに基づいてステートディクトの構成を設定します。

validate_mixed_precision_policy

< >

( )

を検証します。必要ない場合はインポートを持ち込まないよう、抽象化されています。

クラス accelerate.utils.GradientAccumulationPlugin

< >

( num_steps: int = Noneadjust_scheduler: bool = Truesync_with_dataloader: bool = Truesync_each_batch: bool = False )

パラメータ

  • num_steps (int) — 勾配を累積するステップ数。
  • adjust_scheduler (bool、任意、デフォルトはTrue) — ステップの蓄積数を考慮してスケジューラのステップを調整するかどうか。使用しているスケジューラが勾配蓄積用に調整されていない場合は、Trueに設定してください。
  • sync_with_dataloader (bool、省略可能、デフォルトはTrue) — dataloaderの末尾で勾配の設定を同期させるかどうか。
  • sync_each_batch (bool, 省略可) — 各データバッチごとに勾配の設定を同期するかどうか。True に設定すると、分散学習で勾配蓄積を使用する場合にメモリ要件を削減できますが、速度が犠牲になります。

勾配蓄積の動作を設定するためのプラグインです。Acceleratorには、gradient_accumulation_pluginとgradient_accumulation_stepsのどちらか一方のみを渡すことができます。両方を渡すとエラーが発生します。

例:

from accelerate.utils import GradientAccumulationPlugin

gradient_accumulation_plugin = GradientAccumulationPlugin(num_steps=2)
accelerator = Accelerator(gradient_accumulation_plugin=gradient_accumulation_plugin)

クラス accelerate.utils.MegatronLMPlugin

< >

( tp_degree: int = Nonepp_degree: int = Noneuse_custom_fsdp: bool = Noneoverlap_cpu_optimizer_d2h_h2d: bool = Noneno_load_optim: bool = Noneeod_mask_loss: bool = Noneno_save_optim: bool = Noneoptimizer_cpu_offload: bool = Noneuse_precision_aware_optimizer: bool = Nonedecoder_last_pipeline_num_layers: int = Nonerecompute_granularity: str = Nonerecompute_method: str = Nonerecompute_num_layers: int = Noneattention_backend: bool = Noneexpert_model_parallel_size: int = Nonecontext_parallel_size: int = Noneattention_dropout: float = Nonehidden_dropout: float = Noneattention_softmax_in_fp32: bool = Noneexpert_tensor_parallel_size: int = Nonecalculate_per_token_loss: bool = Noneuse_rotary_position_embeddings: bool = Nonenum_micro_batches: int = Nonegradient_clipping: float = Nonesequence_parallelism: bool = Nonerecompute_activations: bool = Noneuse_distributed_optimizer: bool = Nonepipeline_model_parallel_split_rank: int = Nonenum_layers_per_virtual_pipeline_stage: int = Noneis_train_batch_min: str = Truetrain_iters: int = Nonetrain_samples: int = Noneweight_decay_incr_style: str = 'constant'start_weight_decay: float = Noneend_weight_decay: float = Nonelr_decay_style: str = 'linear'lr_decay_iters: int = Nonelr_decay_samples: int = Nonelr_warmup_iters: int = Nonelr_warmup_samples: int = Nonelr_warmup_fraction: float = Nonemin_lr: float = 0consumed_samples: list = Noneno_wd_decay_cond: typing.Callable | None = Nonescale_lr_cond: typing.Callable | None = Nonelr_mult: float = 1.0megatron_dataset_flag: bool = Falseseq_length: int = Noneencoder_seq_length: int = Nonedecoder_seq_length: int = Nonetensorboard_dir: str = Noneset_all_logging_options: bool = Falseeval_iters: int = 100eval_interval: int = 1000return_logits: bool = Falsecustom_train_step_class: typing.Any | None = Nonecustom_train_step_kwargs: dict[str, typing.Any] | None = Nonecustom_model_provider_function: typing.Callable | None = Nonecustom_prepare_model_function: typing.Callable | None = Nonecustom_megatron_datasets_provider_function: typing.Callable | None = Nonecustom_get_batch_function: typing.Callable | None = Nonecustom_loss_function: typing.Callable | None = Noneother_megatron_args: dict[str, typing.Any] | None = None )

パラメータ

  • tp_degree (int、デフォルトはNone) — テンソル並列の度合い。
  • pp_degree (int、デフォルトはNone) — パイプライン並列度。
  • num_micro_batches (int、デフォルトはNone) — マイクロバッチの数。
  • gradient_clipping (float, デフォルトは None) — グローバル L2 ノルムに基づく勾配クリッピングの値 (無効にする場合は 0)。
  • sequence_parallelism (bool、デフォルトはNone) — シーケンス並列処理を有効にします。
  • recompute_activations (bool、デフォルトはNone) — 選択的なアクティベーション再計算を有効にします。
  • use_distributed_optimizer (bool、デフォルトはNone) — 分散オプティマイザーを有効にします。
  • pipeline_model_parallel_split_rank (int、デフォルトはNone) — エンコーダーとデコーダーを分割するランク。
  • num_layers_per_virtual_pipeline_stage (int, デフォルトはNone) — 仮想パイプラインステージあたりのレイヤー数。
  • is_train_batch_min (str、デフォルトはTrue) — trainおよびevalの両方のdataloaderが指定されている場合、micro_batch_sizeを決定します。
  • train_iters (int、デフォルトはNone) — すべてのトレーニング実行にわたって学習するサンプルの総数です。MegatronLMDummySchedulerを使用する場合は、train-itersまたはtrain-samplesのいずれかを指定する必要があります。
  • train_samples (int、デフォルトはNone) — すべてのトレーニング実行にわたって学習するサンプルの総数です。MegatronLMDummySchedulerを使用する場合は、train-itersまたはtrain-samplesのいずれかを指定する必要があります。
  • weight_decay_incr_style (str、デフォルトは'constant') — Weight decayの増加関数。choices=[“constant”, “linear”, “cosine”]。
  • start_weight_decay (float、デフォルトはNone) — L2正則化の初期ウェイト減衰係数。
  • end_weight_decay (float, デフォルトは None) — L2 正則化における、ランの終了時の重み減衰係数。
  • lr_decay_style (str、デフォルトは'linear') — 学習率の減衰関数。choices=[‘constant’, ‘linear’, ‘cosine’]。
  • lr_decay_iters (int、デフォルトはNone) — 学習率の減衰を行う反復回数です。None の場合は、train_itersがデフォルト値として使用されます。
  • lr_decay_samples (int、デフォルトはNone) — 学習率減衰のためのサンプル数。None の場合はtrain_samplesがデフォルトになります。
  • lr_warmup_iters (int、デフォルトはNone) — 学習率を線形ウォームアップする反復回数。
  • lr_warmup_samples (int、デフォルトはNone) — 学習率を線形ウォームアップさせるサンプル数。
  • lr_warmup_fraction (float、デフォルトはNone) — 学習率を線形ウォームアップする lr-warmup-(イテレーション数/サンプル数) の割合。
  • min_lr (float、デフォルトは0) — 学習率の最小値。スケジューラは、この閾値を下回る値をクリップします。
  • consumed_samples (List、デフォルトはNone) — accelerator.prepare呼び出しのデータローダーと同じ順序で消費されたサンプルの数。
  • no_wd_decay_cond (Optional、デフォルトはNone) — 重み減衰を無効にする条件。
  • scale_lr_cond (Optional、デフォルトはNone) — 学習率をスケーリングする条件。
  • lr_mult (float、デフォルトは1.0) — 学習率の乗数。
  • megatron_dataset_flag (bool、デフォルトはFalse) — データセットの形式がMegatron-LMのIndexed/Cached/MemoryMapped形式に従っているかどうか。
  • seq_length (int, デフォルトは None) — 処理するシーケンスの最大長です。
  • encoder_seq_length (int, デフォルトは None) — エンコーダーで処理するシーケンスの最大長です。
  • decoder_seq_length (int, デフォルトは None) — デコーダーで処理するシーケンスの最大長。
  • tensorboard_dir (str、デフォルトはNone) — tensorboardログを保存するパス。
  • set_all_logging_options (bool、デフォルトはFalse) — すべてのログオプションを設定するかどうか。
  • eval_iters (int、デフォルトは100) — 評価用の検証/テストを実行する反復回数。
  • eval_interval (int, デフォルトは 1000) — 検証セットでの評価を実行する間隔。
  • return_logits (bool、デフォルトは False) — モデルから logits を返すかどうか。
  • custom_train_step_class (Optional、デフォルトはNone) — カスタムな学習ステップクラスです。
  • custom_train_step_kwargs (Optional、デフォルトはNone) — カスタムな学習ステップのキーワード引数。
  • custom_model_provider_function (Optional、デフォルトはNone) — カスタムモデルプロバイダー関数。
  • custom_prepare_model_function (Optional、デフォルトはNone) — カスタムのモデル準備関数。
  • custom_megatron_datasets_provider_function (Optional、デフォルトはNone) — カスタムの megatron train_valid_test データセットプロバイダー関数。
  • custom_get_batch_function (Optional、デフォルトはNone) — カスタムのバッチ取得関数。
  • custom_loss_function (Optional、デフォルトはNone) — カスタム損失関数。
  • other_megatron_args (Optional、デフォルトはNone) — その他の Megatron-LM 引数。Megatron-LM を参照してください。

Megatron-LM用のプラグイン。テンソル並列、パイプライン並列、シーケンス並列、データ並列を有効にします。また、選択的なアクティベーション再計算と最適化された融合カーネルも有効にします。

クラス accelerate.utils.TorchDynamoPlugin

< >

( backend: DynamoBackend = Nonemode: str = Nonefullgraph: bool = Nonedynamic: bool = Noneoptions: Any = Nonedisable: bool = Falseuse_regional_compilation: bool = None )

パラメータ

  • backend (DynamoBackend、デフォルトは None) — 有効な Dynamo バックエンドです。詳細は https://pytorch.org/docs/stable/torch.compiler.html を参照してください。
  • mode (str、デフォルトはNone) — 選択可能なオプションは ‘default’、‘reduce-overhead’、‘max-autotune’ です。
  • fullgraph (bool、デフォルトはNone) — モデルを複数のサブグラフに分割してよいかどうかを指定します。
  • dynamic (bool, デフォルトは None) — トレースに動的な形状を使用するかどうか。
  • options (Any、デフォルトはNone) — バックエンドに渡すオプションの辞書です。
  • disable (bool、デフォルトはFalse) — テスト用にtorch.compile()を何もしない操作(no-op)にします
  • use_regional_compilation (bool、デフォルトは None) — GPT2LMHeadModel のようなモデルにおいて、同じクラスの繰り返しブロックを対象としてそれらを順次コンパイルすることでコンパイラのキャッシュにヒットさせ、torch.compile() のコールドスタート時のコンパイル時間を短縮するために使用します。例えば、GPT2LMHeadModel では繰り返しブロック/クラスは GPT2Block であり、model.transformer.h[0] としてアクセスできます。モデルの残りの部分(例: model.lm_head)は別途コンパイルされます。

このプラグインは、PyTorch 2.0 でモデルをコンパイルするために使用されます。

設定

これらは、設定して適切な統合に渡すことができるクラスです

クラス accelerate.utils.BnbQuantizationConfig

< >

( load_in_8bit: bool = Falsellm_int8_threshold: float = 6.0load_in_4bit: bool = Falsebnb_4bit_quant_type: str = 'fp4'bnb_4bit_use_double_quant: bool = Falsebnb_4bit_compute_dtype: str = 'fp16'torch_dtype: dtype = Noneskip_modules: list = Nonekeep_in_fp32_modules: list = None )

パラメータ

  • load_in_8bit (bool、デフォルトはFalse) — 8bit量子化を有効にします。
  • llm_int8_threshold (float、デフォルト値は6.0) — アウトラインの閾値。load_in_8bit=Trueの場合のみ関連します。
  • load_in_4bit (bool、デフォルトはFalse) — 4bit量子化を有効にします。
  • bnb_4bit_quant_type (str、デフォルトはfp4) — bnb.nn.Linear4Bitレイヤーにおける量子化データ型を設定します。オプションは{‘fp4’,‘np4’}です。
  • bnb_4bit_use_double_quant (bool、デフォルトはFalse) — 最初の量子化から得られた量子化定数を再度量子化することで、ネストされた量子化を有効にします。
  • bnb_4bit_compute_dtype (bool、デフォルトは fp16) — 入力時とは異なる計算用のデータ型を設定します。例えば、入力が fp32 であっても、高速化のために計算を bf16 に設定できます。オプションは {‘fp32’,‘fp16’,‘bf16’} です。
  • torch_dtype (torch.dtype、デフォルトは None) — これは、残りの非量子化レイヤーの dtype を設定します。bitsandbytes ライブラリでは、8 ビットモデルの場合は値を torch.float16 に設定し、4 ビットモデルの場合は計算用の dtype と同じ dtype を使用することを推奨しています。
  • skip_modules (List[str]、デフォルトはNone) — 量子化しないモジュールの明示的なリストです。これらのモジュールのdtypeはtorch_dtypeになります。
  • keep_in_fp32_modules (List、デフォルトはNone) — 量子化しないモジュールの明示的なリストです。これらはtorch.float32のまま保持されます。

BitsAndBytesの4bitおよび8bit量子化を有効にするプラグイン

クラス accelerate.DataLoaderConfiguration

< >

( split_batches: bool = Falsedispatch_batches: bool = Noneeven_batches: bool = Trueuse_seedable_sampler: bool = Falsedata_seed: int = Nonenon_blocking: bool = Falseuse_stateful_dataloader: bool = False )

パラメータ

  • split_batches (bool、デフォルトは False) — Accelerator が、dataloader によって生成されるバッチをデバイス間で分割するかどうかを指定します。True の場合、実際のバッチサイズはあらゆる種類の分散プロセスで同じになりますが、使用している num_processes の整数倍である必要があります。False の場合、実際のバッチサイズは、スクリプトで設定した値にプロセス数を掛けたものになります。
  • dispatch_batches (bool、デフォルトは None) — True に設定すると、Accelerator によって準備された dataloader はメインプロセスでのみ反復され、その後バッチが分割されて各プロセスにブロードキャストされます。基礎となるデータセットが IterableDataset である DataLoader の場合はデフォルトで True となり、それ以外の場合は False となります。
  • even_batches (bool、デフォルトは True) — True に設定すると、全プロセスにわたるバッチサイズ合計がデータセットを正確に割り切れない場合、バッチをすべてのワーカーで均等に分割できるように、データセットの先頭にあるサンプルが重複して使用されます。
  • use_seedable_sampler (bool、デフォルトはFalse) — 完全にシード指定可能なランダムサンプラー(data_loader.SeedableRandomSampler)を使用するかどうか。異なるサンプリング手法を用いることで、トレーニング結果を完全に再現可能にします。シード間の結果には差が生じる場合がありますが、複数の異なるシードで比較した場合、平均的な差は無視できるほど小さいです。最適な結果を得るには、set_seed()も併せて実行する必要があります。
  • data_seed (int、デフォルトはNone) — use_seedable_samplerを使用する場合、基盤となるジェネレーターに使用するシードです。Noneの場合、ジェネレーターはtorchの現在のデフォルトのシードを使用します。
  • non_blocking (bool、デフォルトは False) — True に設定すると、Accelerator によって準備された dataloader は非ブロッキングなホストからデバイスへの転送を利用し、dataloader の通信と計算のオーバーラップを改善できます。正常に動作させるには、準備された dataloader で pin_memory が True に設定されていることをお勧めします。
  • use_stateful_dataloader (bool、デフォルトはFalse) — Trueに設定すると、Acceleratorによって準備されるdataloaderはtorchdata.StatefulDataLoaderによってサポートされます。 これには、StatefulDataLoaderをサポートするtorchdataのバージョン0.8.0以上がインストールされている必要があります。

accelerator.prepareを呼び出す際の、dataloader関連の項目の設定です。

クラス accelerate.utils.ProjectConfiguration

< >

( project_dir: str = Nonelogging_dir: str = Noneautomatic_checkpoint_naming: bool = Falsetotal_limit: int = Noneiteration: int = 0save_on_each_node: bool = False )

パラメータ

  • project_dir (str、デフォルトはNone) — データを保存するためのディレクトリへのパス。
  • logging_dir (str、デフォルトはNone) — ローカルで互換性のあるロガーのログを保存するディレクトリへのパスです。None の場合、デフォルトでproject_dirになります。
  • automatic_checkpoint_naming (bool、デフォルトはFalse) — 保存された状態に自動的に連番の名前を付けるかどうか。
  • total_limit (int, デフォルトは None) — 保持する保存状態の総数の最大値です。
  • iteration (int、デフォルトは0) — 現在の保存イテレーション。
  • save_on_each_node (bool、デフォルトはFalse) — マルチノード分散学習を行う場合、モデルとチェックポイントを各ノードに保存するか、メインノードのみに保存するかを指定します。

内部プロジェクトの要件に基づいたAcceleratorオブジェクトの設定。

set_directories

< >

( project_dir: str | None = None )

self.project_dir と self.logging_dir を適切な値に設定します。

環境変数

これらは、異なるユースケースに対して有効化できる環境変数です

  • ACCELERATE_DEBUG_MODE (str): accelerate をデバッグモードで実行するかどうか。こちらに詳細があります。

データ操作と演算

これには、torch のオペレーションと同じ動作を模倣するデータ操作が含まれており、分散プロセスで使用できます。

accelerate.utils.broadcast

< >

( tensorfrom_process: int = 0 )

パラメータ

  • tensor(torch.Tensorのネストされたリスト/タプル/辞書)— 集約するデータ。
  • from_process (int、省略可能、デフォルトは 0) — データを送信するプロセス

Recursively broadcast tensor in a nested list/tuple/dictionary of tensors to all devices.

accelerate.utils.broadcast_object_list

< >

( object_listfrom_process: int = 0 )

パラメータ

  • object_list (picklableなオブジェクトのリスト) — ブロードキャストするオブジェクトのリストです。このリストはインプレースで変更されます。
  • from_process (int、省略可能、デフォルトは 0) — データを送信するプロセス。

picklableオブジェクトのリストを、1つのプロセスから他のプロセスへブロードキャストします。

accelerate.utils.concatenate

< >

( datadim = 0 )

パラメータ

  • data (テンソルのリストのネストされたリスト/タプル/辞書 torch.Tensor) — 連結するデータ。
  • dim (int、任意、デフォルトは 0) — 連結を行う次元。

同じ形状のテンソルのリストからなるネストされたリスト/タプル/辞書のテンソルを再帰的に連結します。 データが単一のバッチしかない場合は、そのまま返されます。

accelerate.utils.convert_outputs_to_fp32

< >

( model_forward )

accelerate.utils.convert_to_fp32

< >

( tensor )

パラメータ

  • tensor (torch.Tensor のネストされたリスト/タプル/辞書) — FP16/BF16 から FP32 へ変換するデータ。

FP16/BF16精度のテンソルからなるネストされたリスト/タプル/辞書の要素を、再帰的にFP32に変換します。

accelerate.utils.gather

< >

( tensor )

パラメータ

  • tensor(torch.Tensorのネストされたリスト/タプル/辞書)— 集約するデータ。

Recursively gather tensor in a nested list/tuple/dictionary of tensors from all devices.

accelerate.utils.gather_object

< >

( object: Any )

パラメータ

  • object (pickle可能なオブジェクトのネストされたリスト/タプル/辞書) — 集約するデータ。

…

accelerate.utils.get_grad_scaler

< >

( distributed_type: DistributedType = None**kwargs )

パラメータ

  • distributed_type (DistributedType、任意、デフォルトは None) — 分散環境のタイプです。
  • kwargs — 利用するGradScalerコンストラクタの追加引数。

環境に基づいて適切なGradScaler実装を初期化して返す汎用的なヘルパーです。

accelerate.utils.get_mixed_precision_context_manager

< >

( native_amp: bool = Falseautocast_kwargs: AutocastKwargs = None )

パラメータ

  • native_amp (bool、任意、デフォルトは False) — 混合精度が実際に有効化されているかどうか。

混合精度のオートキャスティング用のコンテキストマネージャーを返します

accelerate.utils.listify

< >

( data )

パラメータ

  • data (torch.Tensor のネストされたリスト/タプル/辞書) — 通常の数値に変換する対象のデータ。

ネストされたリスト/タプル/辞書内のテンソルを再帰的に検索し、数値のリストに変換します。

accelerate.utils.pad_across_processes

< >

( tensordim = 0pad_index = 0pad_first = False )

パラメータ

  • tensor(torch.Tensorのネストされたリスト/タプル/辞書)— 集約するデータ。
  • dim (int、任意、デフォルトは 0) — パディングを適用する次元。
  • pad_index (int, 任意、デフォルトは 0) — パディングに使用する値。
  • pad_first (bool、任意、デフォルトはFalse) — 先頭でパディングを行うか、末尾でパディングを行うかを指定します。

…

accelerate.utils.recursively_apply

< >

( funcdata*argstest_type = <function is_torch_tensor at 0x7f8c167ca8d0>error_on_other_type = False**kwargs )

パラメータ

  • func (callable) — 再帰的に適用する関数。
  • data (test_type が受け入れるオブジェクトのネストされたリスト/タプル/辞書) — func を適用する対象のデータ
  • *args — 展開されたデータに func を適用する際に、func に渡される位置引数。
  • test_type (Callable[[Any], bool]、省略可能、デフォルトはis_torch_tensor) — funcを特定のリーフオブジェクトに適用すべきかどうかを判定する述語です。
  • error_on_other_type (bool、任意、デフォルトはFalse) — dataをアンパックした後に、test_typeがFalseを返すオブジェクトに遭遇した場合、エラーを返すかどうかを指定します。Falseの場合、関数はそのようなオブジェクトを変更せずにそのまま返します。
  • **kwargs (追加のキーワード引数、任意) — アンパックされたデータに func を適用する際に、func に渡されるキーワード引数です。

…

accelerate.utils.reduce

< >

( tensorreduction = 'mean'scale = 1.0 )

パラメータ

  • tensor (torch.Tensor のネストされたリスト/タプル/辞書) — 集約するデータ。
  • reduction (str、任意、デフォルトは"mean") — 集約方法。“mean”、“sum”、“max”、“none”のいずれかを指定できます。
  • scale (float, 省略可能) — reduce の後に適用されるデフォルトのスケーリング値です。XLA のみ有効です。

…

accelerate.utils.send_to_device

< >

( tensordevicenon_blocking = Falseskip_keys = None )

パラメータ

  • tensor(torch.Tensorのネストされたリスト/タプル/辞書)— 指定されたデバイスに送信するデータ。
  • device (torch.device) — データを転送するデバイス。
  • non_blocking (bool、省略可、デフォルトはFalse) — Trueの場合、デバイスへの転送が非同期で実行され、データの移動と計算をオーバーラップさせることができます。デバイスがサポートしている場合のみ有効です(例: CUDA)。
  • skip_keys (str または List[str]、省略可) — 辞書型 tensor の中から、指定された device へ送信すべきでないキー、またはそのリスト。これらのキーを持つエントリは、元のデバイスに保持されます。

テンソルのネストされたリスト/タプル/辞書の要素を、指定されたデバイスへ再帰的に送信します。

accelerate.utils.slice_tensors

< >

( datatensor_sliceprocess_index = Nonenum_processes = None )

パラメータ

  • data (torch.Tensor のネストされたリスト/タプル/辞書) — スライスするデータ。
  • tensor_slice (slice) — 取得するスライス。

Recursively takes a slice in a nested list/tuple/dictionary of tensors.

環境チェック

これらの機能は、現在の作業環境の状態を確認します。これには、オペレーティングシステム自体の情報、そのサポート可能な機能、および特定の依存関係がインストールされているかどうかが含まれます。

accelerate.utils.is_bf16_available

< >

( ignore_tpu = False )

bf16がサポートされているかどうかを確認します。必要に応じてTPUを無視できます。

accelerate.utils.is_mps_available

< >

( min_version = '1.12' )

MPSデバイスが利用可能かどうかを確認します。必要な最低バージョンは1.12です。

accelerate.utils.is_npu_available

( check_device = False )

torch_npuがインストールされているか、また環境にNPUが存在する可能性があるかをチェックします

accelerate.utils.is_torch_version

< >

( operation: strversion: str )

パラメータ

  • operation (str) — 演算子の文字列表現。例: ">" または "<="
  • version (str) — PyTorchの文字列形式のバージョン

現在のPyTorchバージョンを、指定された参照値と演算子で比較します。

accelerate.utils.is_torch_xla_available

( check_is_tpu = Falsecheck_is_gpu = False )

torch_xla が利用可能かどうかを確認します。torch xla がインストールされた環境でネイティブの pytorch ジョブをトレーニングするには、USE_TORCH_XLA を false に設定してください。

accelerate.utils.is_xpu_available

( check_device = False )

標準のPyTorch(>=2.7)経由でXPUアクセラレーションが利用可能かどうか、および環境にXPUが存在する可能性があるかどうかを確認します。

環境の操作

accelerate.utils.patch_environment

< >

( **kwargs )

os.environ に渡された各キーワード引数を追加し、終了時にそれらを削除するコンテキストマネージャーです。

kwargs内の値を文字列に変換し、すべてのキーを大文字に変換します。

例:

>>> import os
>>> from accelerate.utils import patch_environment

>>> with patch_environment(FOO="bar"):
...     print(os.environ["FOO"])  # prints "bar"
>>> print(os.environ["FOO"])  # raises KeyError

accelerate.utils.clear_environment

< >

( )

環境変数を一時的にクリアするコンテキストマネージャーです。

このコンテキストが終了すると、以前の環境変数が復元されます。

例:

>>> import os
>>> from accelerate.utils import clear_environment

>>> os.environ["FOO"] = "bar"
>>> with clear_environment():
...     print(os.environ)
...     os.environ["FOO"] = "new_bar"
...     print(os.environ["FOO"])
{}
new_bar

>>> print(os.environ["FOO"])
bar

accelerate.commands.config.default.write_basic_config

< >

( mixed_precision = 'no'save_location: str = '/home/runner/.cache/huggingface/accelerate/default_config.yaml' )

パラメータ

  • mixed_precision (str、任意、デフォルトは “no”) — 使用する Mixed Precision です。“no”、“fp16”、“bf16” のいずれかである必要があります。
  • save_location (str、任意、デフォルトは default_json_config_file) — 任意のカスタム保存先です。accelerate launch を使用する際は、--config_file に渡す必要があります。デフォルトの保存先は Hugging Face のキャッシュフォルダ内 (~/.cache/huggingface) ですが、HF_HOME 環境変数を設定することで上書きでき、その後に accelerate/default_config.yaml が続きます。

ローカルマシン(複数のGPUを備える可能性あり)で使用する基本的なクラスター設定を作成して保存します。CPU専用のマシンである場合は、CPUも設定します。

🤗 Accelerate を初めてセットアップする際、accelerate config を実行する代わりに、[~utils.write_basic_config] を使用して素早く設定を行うことができます。

accelerate.utils.set_numa_affinity

( local_process_index: intverbose: bool | None = None )

パラメータ

  • local_process_index (int) — 現在のサーバー上の現在のプロセスのインデックス。
  • verbose (bool, オプション) — 各プロセスの新しい CPU コア割り当てを出力するかどうか。ACCELERATE_DEBUG_MODE が有効な場合、デフォルトで True になります。

現在のプロセスを特定のNUMAノードに割り当てます。各ノードに少なくとも2つのCPUがある場合、最も効率的に動作します。

この結果は呼び出し間でキャッシュされます。上書きする場合は、accelerate.utils.environment.override_numa_afifnityを使用してください。

accelerate.utils.environment.override_numa_affinity

< >

( local_process_index: intverbose: bool | None = None )

パラメータ

  • local_process_index (int) — 現在のサーバー上の現在のプロセスのインデックス。
  • verbose (bool, 任意) — 各CPUへの割り当てをログ出力するかどうか。ACCELERATE_DEBUG_MODEが有効な場合、デフォルトでTrueになります。

現在のプロセスに設定されているNUMAアフィニティをオーバーライドします。この処理は非常に負荷が大きく、設定するアフィニティの再計算が必要です。理想的には、代わりにutils.environment.set_numa_affinityを使用してください。

accelerate.utils.purge_accelerate_environment

< >

( func_or_cls )

デコレーター。装飾されたクラスまたは関数によって設定されたaccelerateの環境変数をクリーンアップします。

特定の状況下では、特定のクラスや関数を呼び出すと、accelerate の環境変数が設定され、その後クリーンアップされないことがあります。例えば、以下を呼び出した場合:

TrainingArguments(fp16=True, …)

以下の環境変数が設定されます:

ACCELERATE_MIXED_PRECISION=fp16

This can affect subsequent code, since the env var takes precedence over TrainingArguments(fp16=False). This is especially relevant for unit testing, where we want to avoid the individual tests to have side effects on one another. Decorate the unit test function or whole class with this decorator to ensure that after each test, the env vars are cleaned up. This works for both unittest.TestCase and normal classes (pytest); it also works when decorating the parent class.

メモリ

accelerate.find_executable_batch_size

< >

( function: callable | None = Nonestarting_batch_size: int = 128reduce_batch_size_fn: callable | None = None )

パラメータ

  • function (callable, 任意) — ラップする関数
  • starting_batch_size (int, 任意) — メモリに収まるよう試みるバッチサイズ
  • reduce_batch_size_fn (callable、省略可) — メモリ不足エラーが発生した後の新しいバッチサイズを決定する関数です。指定しない場合、失敗するたびにバッチサイズが0.9倍になります。この関数は引数を受け取らず、新しい(縮小された)バッチサイズをintとして返す必要があります。

functionの実行を試みる基本的なデコレーターです。メモリ不足またはCUDNNに関連する例外が発生して失敗した場合、バッチサイズを0.9倍にしてfunctionに渡します。

functionは、最初の引数としてbatch_sizeパラメータを受け取る必要があります。

例:

>>> from accelerate.utils import find_executable_batch_size


>>> @find_executable_batch_size(starting_batch_size=128)
... def train(batch_size, model, optimizer):
...     ...


>>> train(model, optimizer)

モデリング

これらのユーティリティは、PyTorchモデルとのインタラクションに関連しています

accelerate.utils.calculate_maximum_sizes

< >

( model: Module )

モデルの総サイズと最大レイヤーのサイズを計算します

accelerate.utils.compute_module_sizes

< >

( model: Moduledtype: str | torch.device | None = Nonespecial_dtypes: dict[str, str | torch.device] | None = Nonebuffers_only: bool = False )

指定されたモデルの各サブモジュールのサイズを計算します。

accelerate.utils.extract_model_from_parallel

< >

( modelkeep_fp32_wrapper: bool = Truekeep_torch_compile: bool = Truerecursive: bool = False ) → torch.nn.Module

パラメータ

  • model (torch.nn.Module) — 抽出するモデル。
  • keep_fp32_wrapper (bool、省略可) — モデルから混合精度フックを削除するかどうかを指定します。
  • keep_torch_compile (bool、省略可) — コンパイル済みモデルをアンラップするかどうか。
  • recursive (bool、省略可、デフォルトはFalse) — トップレベルの分散コンテナだけでなく、modelからmodule.moduleのすべてのケースを再帰的に抽出し、子サブレイヤーも再帰的にアンラップするかどうか。

戻り値

torch.nn.Module

抽出されたモデル。

分散コンテナからモデルを抽出します。

accelerate.utils.get_balanced_memory

< >

( model: Modulemax_memory: dict[int | str, int | str] | None = Noneno_split_module_classes: list[str] | None = Nonedtype: str | torch.dtype | None = Nonespecial_dtypes: dict[str, str | torch.device] | None = Nonelow_zero: bool = False )

パラメータ

  • model (torch.nn.Module) — 解析対象のモデル。
  • max_memory (Dict, 任意) — デバイス識別子から最大メモリ量への辞書です。未設定の場合は、利用可能な最大メモリがデフォルトとして使用されます。 例: max_memory={0: "1GB"}。
  • no_split_module_classes (List[str], 任意) — デバイス間で分割すべきでないレイヤーのクラス名のリストです(残差接続を持つレイヤーなど)。
  • dtype (str または torch.dtype、省略可) — 指定された場合、読み込み時に重みがその型に変換されます。
  • special_dtypes (Dict[str, Union[str, torch.device]], 省略可) — 指定した場合、特定の重みに適用する特殊な dtype です(すべての重みにデフォルトとして使用される dtype を上書きします)。
  • low_zero (bool、省略可) — GPU 0 上の重みの数を最小化します。Transformers の generate 関数など、他の操作に GPU 0 を使用する場合に便利です。

利用可能な各GPUの使用をバランスよく調整するために、infer_auto_device_map()用のmax_memory辞書を計算します。

すべての計算は、モデルパラメータのサイズとdtypeを解析することによって行われます。その結果、モデルはmetaデバイス上に配置できます(init_empty_weightsコンテキストマネージャー内で初期化された場合と同様です)。

accelerate.utils.get_max_layer_size

< >

( modules: listmodule_sizes: dictno_split_module_classes: list ) → Tuple[int, List[str]]

パラメータ

  • modules (List[Tuple[str, torch.nn.Module]]) — 最大レイヤーサイズを決定したい名前付きモジュールのリストです。
  • module_sizes (Dict[str, int]) — compute_module_sizes によって生成される、各レイヤー名とそのサイズ(バイト数)の対応を示す辞書です。
  • no_split_module_classes (List[str]) — 分割したくないレイヤーのクラス名のリストです。

戻り値

Tuple[int, List[str]]

その最大サイズを実現するレイヤー名のリスト付きの、レイヤーの最大サイズ。

…のリストをスキャンし、1つの完全なレイヤーが使用する最大サイズを返すユーティリティ関数です。ここで、レイヤーの定義は以下の通りです。

  • 直接の子モジュールを持たないモジュール(パラメータとバッファのみ)
  • クラス名がno_split_module_classesのリストに含まれているモジュール

accelerate.infer_auto_device_map

< >

( model: Modulemax_memory: dict[int | str, int | str] | None = Noneno_split_module_classes: list[str] | None = Nonedtype: str | torch.dtype | None = Nonespecial_dtypes: dict[str, str | torch.dtype] | None = Noneverbose: bool = Falseclean_result: bool = Trueoffload_buffers: bool = Falsefallback_allocation: bool = False )

パラメータ

  • model (torch.nn.Module) — 解析対象のモデル。
  • max_memory (Dict, 任意) — デバイス識別子から最大メモリ量への辞書です。未設定の場合は、利用可能な最大メモリがデフォルトとして使用されます。 例: max_memory={0: "1GB"}。
  • no_split_module_classes (List[str], 任意) — デバイス間で分割すべきでないレイヤーのクラス名のリストです(残差接続を持つレイヤーなど)。
  • dtype (str または torch.dtype、省略可) — 指定された場合、読み込み時に重みがその型に変換されます。
  • special_dtypes (Dict[str, Union[str, torch.device]], 省略可) — 指定した場合、特定の重みに適用する特殊な dtype です(すべての重みにデフォルトとして使用される dtype を上書きします)。
  • verbose (bool、任意、デフォルトはFalse) — device_map を構築する際に、デバッグ用のステートメントを出力するかどうかを指定します。
  • clean_result (bool、省略可能、デフォルトはTrue) — 同じデバイスに配置されるすべてのサブモジュールをグループ化して、結果の device_map を整理します。
  • offload_buffers (bool、任意、デフォルトはFalse) — CPUまたはハードドライブにオフロードされるレイヤーにおいて、パラメータに加えてバッファもオフロードするかどうか。
  • fallback_allocation (bool、任意、デフォルトはFalse) — 通常の割り当てが失敗した場合、BFS を使用してサイズ制限内に収まるモジュールの割り当てを試みます。

…

  • どの GPU の利用可能なメモリも超過しません。
  • CPUへのオフロードが必要な場合、GPU 0には常に空き領域が残っており、CPUにオフロードされた層のうち最もサイズが大きいものを再度配置できます。
  • CPUへのオフロードが必要な場合、CPUで利用可能なRAMを超えないようにします。
  • ディスクへのオフロードが必要な場合、CPUには常に空き領域が残っており、ディスクにオフロードされたレイヤーのうち最もサイズが大きいものを再度配置できます。

すべての計算は、モデルパラメータのサイズとdtypeを解析することによって行われます。その結果、モデルはmetaデバイス上に配置できます(init_empty_weightsコンテキストマネージャー内で初期化された場合と同様です)。

accelerate.load_checkpoint_in_model

< >

( model: Modulecheckpoint: str | os.PathLikedevice_map: dict[str, int | str | torch.device] | None = Noneoffload_folder: str | os.PathLike | None = Nonedtype: str | torch.dtype | None = Noneoffload_state_dict: bool = Falseoffload_buffers: bool = Falsekeep_in_fp32_modules: list[str] | None = Noneoffload_8bit_bnb: bool = Falsestrict: bool = Falsefull_state_dict: bool = Truebroadcast_from_rank0: bool = False )

パラメータ

  • model (torch.nn.Module) — チェックポイントを読み込みたいモデル。
  • checkpoint (str または os.PathLike) — 読み込むフォルダのチェックポイントです。以下の場合があります:
    • モデル全体の state dict を含むファイルへのパス
    • シャード化されたチェックポイントのインデックスを含む.jsonファイルへのパス
    • 一意の.index.jsonファイルとチェックポイントのシャードを含むフォルダへのパス。
    • 一意のpytorch_model.binまたはmodel.safetensorsファイルを含むフォルダへのパス。
  • device_map (Dict[str, Union[int, str, torch.device]], 省略可) — 各サブモジュールをどのデバイスに配置するかを指定するマップです。パラメータやバッファの名前まで細かく指定する必要はなく、特定のモジュール名が指定されると、そのモジュールのすべてのサブモジュールが同じデバイスに送信されます。
  • offload_folder (str または os.PathLike、省略可) — device_map に "disk" という値が含まれている場合、重みをオフロードするフォルダ。
  • dtype (str または torch.dtype、省略可) — 指定された場合、読み込み時に重みがその型に変換されます。
  • offload_state_dict (bool、省略可、デフォルトはFalse) — Trueの場合、CPU state dictの重みと最大のシャードの合計がCPU RAMに収まらない場合に、CPU RAM不足を回避するため、CPU state dictを一時的にハードドライブにオフロードします。
  • offload_buffers (bool、任意、デフォルトはFalse) — ディスクにオフロードされる重みにバッファを含めるかどうかを指定します。
  • keep_in_fp32_modules(List[str], optional) — torch.float32 dtype で保持するモジュールのリスト。
  • offload_8bit_bnb (bool, 省略可) — 8ビットモジュールのCPU/ディスクへのオフロードを有効にするかどうか。
  • strict (bool、省略可、デフォルトはFalse) — チェックポイントのstate_dictのキーが、モデルのstate_dictのキーと厳密に一致することを強制するかどうか。
  • full_state_dict (bool、省略可能、デフォルトはTrue) — Trueに設定すると、読み込まれた state_dict 内のすべてのテンソルが集約されます。読み込まれた state_dict には、ShardedTensor や DTensor は含まれません。
  • broadcast_from_rank0 (False、任意、デフォルトは False) — このオプションが True の場合、分散 ProcessGroup が初期化されている必要があります。rank0 は完全な state_dict を受信し、state_dict 内のテンソルを 1 つずつ他の rank にブロードキャストします。他の rank はテンソルを受信し、モデル内のローカルシャードに応じてシャード化(該当する場合)します。

モデル内の(シャード化された可能性のある)チェックポイントをロードし、ロードされる際に重みを指定されたデバイスに送信する可能性があります。

Once loaded across devices, you still need to call dispatch_model() on your model to make it able to run. To group the checkpoint loading and dispatch in one single call, use load_checkpoint_and_dispatch().

accelerate.utils.load_offloaded_weights

< >

( modelindexoffload_folder )

パラメータ

  • model (torch.nn.Module) — 重みをロードする対象のモデル。
  • index (dict) — モデルからオフロードされた各パラメータのパラメータ名とそのメタデータを含む辞書。
  • offload_folder (str) — オフロードされた重みが保存されるフォルダ。

オフロードフォルダから重みをモデルに読み込みます。

accelerate.utils.load_state_dict

< >

( checkpoint_filedevice_map = None )

パラメータ

  • checkpoint_file (str) — 読み込むチェックポイントのパス。
  • device_map (Dict[str, Union[int, str, torch.device]], 省略可) — 各サブモジュールをどのデバイスに配置するかを指定するマップです。パラメータやバッファの名前まで細かく指定する必要はなく、特定のモジュール名が指定されると、そのモジュールのすべてのサブモジュールが同じデバイスに送信されます。

…のファイルからチェックポイントを読み込みます。チェックポイントがsafetensors形式であり、デバイスマップが渡されている場合、重みをGPUに直接高速で読み込むことができます。

accelerate.utils.offload_state_dict

< >

( save_dir: str | os.PathLikestate_dict: dict )

パラメータ

  • save_dir (str または os.PathLike) — state dict をオフロードするディレクトリ。
  • state_dict (Dict[str, torch.Tensor]) — オフロードするテンソルの辞書です。

指定されたフォルダにステートディクトをオフロードします。

accelerate.utils.retie_parameters

< >

( modeltied_params )

パラメータ

  • model (torch.nn.Module) — パラメータの再結合を行う対象のモデル。
  • tied_params (List[List[str]]) — find_tied_parameters によって取得される、パラメータ名から紐付けられたパラメータ名へのマッピング。

リンクが切断された場合(フックの追加時など)、指定されたモデル内のタイドパラメータを再設定します。

accelerate.utils.set_module_tensor_to_device

< >

( module: Moduletensor_name: strdevice: int | str | torch.devicevalue: torch.Tensor | None = Nonedtype: str | torch.dtype | None = Nonefp16_statistics: torch.HalfTensor | None = Nonetied_params_map: dict[int, dict[torch.device, torch.Tensor]] | None = Nonenon_blocking: bool = Falseclear_cache: bool = True )

パラメータ

  • module (torch.nn.Module) — 移動したいテンソルが存在するモジュール。
  • tensor_name (str) — パラメータ/バッファの完全な名前。
  • device (int、strまたはtorch.device) — テンソルを設定するデバイス。
  • value (torch.Tensor, 任意) — テンソルの値(meta デバイスから他のデバイスへ移動する際に有用です)。
  • dtype (torch.dtype, 省略可) — 指定された場合、パラメータの値はこのdtypeにキャストされます。指定されない場合、valueはモデル内の既存パラメータのdtypeにキャストされます。
  • fp16_statistics (torch.HalfTensor, 任意) — モジュールに設定する fp16 統計のリストです。8 ビットモデルのシリアライズに使用されます。
  • tied_params_map (Dict[int, Dict[torch.device, torch.Tensor]], optional, デフォルトは None) — 現在のデータポインタから、デバイスごとにディスパッチ済みの共有重みの辞書へのマップです。特定の実行デバイスに対して、このパラメータは、メモリを重複させる代わりに、そのデバイス上の共有重みの最初の利用可能なポインタを他のすべての重みで再利用するために役立ちます。
  • non_blocking (bool、省略可能、デフォルトは False) — True の場合、可能な限り、デバイスへの転送はホストに対して非同期になります。
  • clear_cache (bool、任意、デフォルトはTrue) — テンソルをデバイスに設定した後に、デバイスキャッシュをクリアするかどうかを指定します。

モジュールの特定のテンソル(パラメータまたはバッファ)を指定されたデバイスに設定するためのヘルパー関数です(param.to(device) を実行するとパラメータにリンクされない新しいテンソルが作成されるため、この関数が必要になります)。

accelerate.utils.get_module_children_bottom_up

< >

( model: Modulereturn_fqns: bool = False ) → list[torch.nn.Module]

パラメータ

  • model (torch.nn.Module) — 子を取得する対象のモデル

戻り値

list[torch.nn.Module]

modelの子モジュールのリスト(下から上への順序)。最後の要素はmodel自体です。

モデルをボトムアップの順序で走査し、その順序で子モジュールを返します。

並列

これには、並列処理を行う際に使用すべき一般的なユーティリティが含まれます。

accelerate.utils.extract_model_from_parallel

< >

( modelkeep_fp32_wrapper: bool = Truekeep_torch_compile: bool = Truerecursive: bool = False ) → torch.nn.Module

パラメータ

  • model (torch.nn.Module) — 抽出するモデル。
  • keep_fp32_wrapper (bool、省略可) — モデルから混合精度フックを削除するかどうかを指定します。
  • keep_torch_compile (bool、省略可) — コンパイル済みモデルをアンラップするかどうか。
  • recursive (bool、省略可、デフォルトはFalse) — トップレベルの分散コンテナだけでなく、modelからmodule.moduleのすべてのケースを再帰的に抽出し、子サブレイヤーも再帰的にアンラップするかどうか。

戻り値

torch.nn.Module

抽出されたモデル。

分散コンテナからモデルを抽出します。

accelerate.utils.save

< >

( objfsave_on_each_node: bool = Falsesafe_serialization: bool = False )

パラメータ

  • obj — 保存するデータ
  • f — データを保存するために使用するファイル(またはファイルライクオブジェクト)
  • save_on_each_node (bool、省略可、デフォルトはFalse) — グローバルメインプロセスでのみ保存するかどうか
  • safe_serialization (bool、省略可能、デフォルトはFalse) — objをsafetensorsで保存するか、従来のPyTorchの方式(pickleを使用)で保存するかどうかを指定します。

データをディスクに保存します。torch.save()の代わりに使用します。

accelerate.utils.load

< >

( fmap_location = None**kwargs )

パラメータ

  • f — データをロードするために使用するファイル(またはファイルライクオブジェクト)
  • map_location — ストレージのロケーションをどのように再マッピングするかを指定する関数、torch.device、文字列、または辞書
  • **kwargs — torch.load()に渡す追加のキーワード引数。

torch.load()の互換性のあるドロップイン代替実装です。torchのバージョンが2.4.0以上の場合、weights_onlyを使用できます。それ以外の場合は、このキーワード引数は無視されます。

NumPy配列に対する例外も追加(その後削除)します

accelerate.utils.wait_for_everyone

< >

( )

スクリプトにブロッキングポイントを導入し、すべてのプロセスがこの地点に到達したことを確認してから処理を続行します。

すべてのプロセスがこの指示に到達するようにしてください。そうしないと、プロセスの1つが永久にハングしたままになります。

ランダム

これらのユーティリティは、すべてのランダム状態の設定と同期に関連しています。

accelerate.utils.set_seed

< >

( seed: intdevice_specific: bool = Falsedeterministic: bool = False )

パラメータ

  • seed (int) — 設定するシード。
  • device_specific (bool、任意、デフォルトは False) — self.process_index を用いて、各デバイスでシードをわずかに変えるかどうか。
  • deterministic (bool、任意、デフォルトはFalse) — 利用可能な場合に決定論的アルゴリズムを使用するかどうか。トレーニングが遅くなる可能性があります。

random、numpy、torch でシードを設定し、再現可能な動作を実現するためのヘルパー関数です。

accelerate.utils.synchronize_rng_state

< >

( rng_type: accelerate.utils.dataclasses.RNGType | None = Nonegenerator: torch.Generator | None = None )

accelerate.synchronize_rng_states

< >

( rng_types: listgenerator: torch.Generator | None = None )

PyTorch XLA

これには、PyTorchをXLAと併用する際に便利なユーティリティが含まれます。

accelerate.utils.install_xla

< >

( upgrade: bool = False )

パラメータ

  • upgrade (bool、省略可能、デフォルトはFalse) — torchをアップグレードし、最新のtorch_xlaのホイールをインストールするかどうか。

Google Colaboratory において、torch のバージョンに基づいて適切な xla wheels をインストールするためのヘルパー関数です。

例:

>>> from accelerate.utils import install_xla

>>> install_xla(upgrade=True)

モデルの重みの読み込み

これには、チェックポイントの読み込みに役立つユーティリティが含まれます。

accelerate.load_checkpoint_in_model

< >

( model: Modulecheckpoint: str | os.PathLikedevice_map: dict[str, int | str | torch.device] | None = Noneoffload_folder: str | os.PathLike | None = Nonedtype: str | torch.dtype | None = Noneoffload_state_dict: bool = Falseoffload_buffers: bool = Falsekeep_in_fp32_modules: list[str] | None = Noneoffload_8bit_bnb: bool = Falsestrict: bool = Falsefull_state_dict: bool = Truebroadcast_from_rank0: bool = False )

パラメータ

  • model (torch.nn.Module) — チェックポイントを読み込みたいモデル。
  • checkpoint (str または os.PathLike) — 読み込むフォルダのチェックポイントです。以下の場合があります:
    • モデル全体の state dict を含むファイルへのパス
    • シャード化されたチェックポイントのインデックスを含む.jsonファイルへのパス
    • 一意の.index.jsonファイルとチェックポイントのシャードを含むフォルダへのパス。
    • 一意のpytorch_model.binまたはmodel.safetensorsファイルを含むフォルダへのパス。
  • device_map (Dict[str, Union[int, str, torch.device]], 省略可) — 各サブモジュールをどのデバイスに配置するかを指定するマップです。パラメータやバッファの名前まで細かく指定する必要はなく、特定のモジュール名が指定されると、そのモジュールのすべてのサブモジュールが同じデバイスに送信されます。
  • offload_folder (str または os.PathLike、省略可) — device_map に "disk" という値が含まれている場合、重みをオフロードするフォルダ。
  • dtype (str または torch.dtype、省略可) — 指定された場合、読み込み時に重みがその型に変換されます。
  • offload_state_dict (bool、省略可、デフォルトはFalse) — Trueの場合、CPU state dictの重みと最大のシャードの合計がCPU RAMに収まらない場合に、CPU RAM不足を回避するため、CPU state dictを一時的にハードドライブにオフロードします。
  • offload_buffers (bool、任意、デフォルトはFalse) — ディスクにオフロードされる重みにバッファを含めるかどうかを指定します。
  • keep_in_fp32_modules(List[str], optional) — torch.float32 dtype で保持するモジュールのリスト。
  • offload_8bit_bnb (bool, 省略可) — 8ビットモジュールのCPU/ディスクへのオフロードを有効にするかどうか。
  • strict (bool、省略可、デフォルトはFalse) — チェックポイントのstate_dictのキーが、モデルのstate_dictのキーと厳密に一致することを強制するかどうか。
  • full_state_dict (bool、省略可能、デフォルトはTrue) — Trueに設定すると、読み込まれた state_dict 内のすべてのテンソルが集約されます。読み込まれた state_dict には、ShardedTensor や DTensor は含まれません。
  • broadcast_from_rank0 (False、任意、デフォルトは False) — このオプションが True の場合、分散 ProcessGroup が初期化されている必要があります。rank0 は完全な state_dict を受信し、state_dict 内のテンソルを 1 つずつ他の rank にブロードキャストします。他の rank はテンソルを受信し、モデル内のローカルシャードに応じてシャード化(該当する場合)します。

モデル内の(シャード化された可能性のある)チェックポイントをロードし、ロードされる際に重みを指定されたデバイスに送信する可能性があります。

Once loaded across devices, you still need to call dispatch_model() on your model to make it able to run. To group the checkpoint loading and dispatch in one single call, use load_checkpoint_and_dispatch().

量子化

これには、モデルの量子化に役立つユーティリティが含まれます。

accelerate.utils.load_and_quantize_model

< >

( model: Modulebnb_quantization_config: BnbQuantizationConfigweights_location: str | os.PathLike | None = Nonedevice_map: dict[str, int | str | torch.device] | None = Noneno_split_module_classes: list[str] | None = Nonemax_memory: dict[int | str, int | str] | None = Noneoffload_folder: str | os.PathLike | None = Noneoffload_state_dict: bool = False ) → torch.nn.Module

パラメータ

  • model (torch.nn.Module) — 入力モデル。モデルは既に読み込まれているか、meta デバイス上に存在している可能性があります。
  • bnb_quantization_config (BnbQuantizationConfig) — bitsandbytes の量子化パラメータ
  • weights_location (str または os.PathLike) — 読み込むフォルダの weights_location です。以下の場合があります:
    • モデル全体の state dict を含むファイルへのパス
    • シャード化されたチェックポイントのインデックスを含む.jsonファイルへのパス
    • 一意の.index.jsonファイルとチェックポイントのシャードを含むフォルダへのパス。
    • 一意のpytorch_model.binファイルを含むフォルダへのパス。
  • device_map (Dict[str, Union[int, str, torch.device]], 省略可) — 各サブモジュールをどのデバイスに配置するかを指定するマップです。パラメータやバッファの名前まで細かく指定する必要はなく、特定のモジュール名が指定されると、そのモジュールのすべてのサブモジュールが同じデバイスに送信されます。
  • no_split_module_classes (List[str], 任意) — デバイス間で分割すべきでないレイヤーのクラス名のリストです(残差接続を持つレイヤーなど)。
  • max_memory (Dict, 任意) — デバイス識別子から最大メモリ量への辞書です。未設定の場合は、利用可能な最大メモリがデフォルトとして使用されます。
  • offload_folder (str または os.PathLike、省略可) — device_map に "disk" という値が含まれている場合、重みをオフロードするフォルダ。
  • offload_state_dict (bool、省略可、デフォルトはFalse) — Trueの場合、CPU state dictの重みと最大のシャードの合計がCPU RAMに収まらない場合に、CPU RAM不足を回避するため、CPU state dictを一時的にハードドライブにオフロードします。

戻り値

torch.nn.Module

量子化されたモデル

この関数は、bnb_quantization_config に渡された関連する設定を使用して、入力モデルを量子化します。モデルがメタデバイスにある場合、渡された device_map に従って重みをロードおよびディスパッチします。モデルがすでにロードされている場合、モデルを量子化して GPU に配置します。

Update on GitHub