Accelerate documentation

Yardımcı işlevler ve sınıflar

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

Yardımcı işlevler ve sınıflar

Aşağıda, kullanım senaryilerine göre ayrılmış olarak 🤗 Accelerate'in sağladığı çeşitli yardımcı işlevler yer almaktadır.

Sabitler

🤗 Accelerate genelinde referans olarak kullanılan sabitler

Accelerator.save_state() kullanılırken kullanılan sabitler şunlardır:

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() kullanılırken kullanılan sabitler şunlardır

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"

Veri Sınıfları

Bunlar, 🤗 Accelerate boyunca kullanılan temel dataclass'lerdir ve parametre olarak geçirilebilirler.

Bağımsız

Bunlar, kullanılan dağıtık sistemin türü gibi kontroller için kullanılan bağımsız dataclass'lardır

sınıf accelerate.utils.ComputeEnvironment

< >

( *values )

Hesaplama ortamının bir türünü temsil eder.

Değerler:

  • LOCAL_MACHINE — özel/özel küme donanımı.
  • AMAZON_SAGEMAKER — Hesaplama ortamı olarak Amazon SageMaker.

sınıf accelerate.DistributedType

< >

( *values )

Dağıtık ortam türünü temsil eder.

Değerler:

  • YOK — Dağıtık bir ortam değil, yalnızca tek bir süreç.
  • MULTI_CPU — Birden fazla CPU düğümünde dağıtılmış.
  • MULTI_GPU — Birden fazla GPU üzerinde dağıtılmış.
  • MULTI_MLU — Birden fazla MLU üzerinde dağıtılmış.
  • MULTI_SDAA — Birden fazla SDAA üzerinde dağıtılmış.
  • MULTI_MUSA — Birden fazla MUSA üzerinde dağıtılmış.
  • MULTI_NPU — Birden fazla NPU üzerinde dağıtılmış.
  • MULTI_XPU — Birden fazla XPU üzerinde dağıtılmış.
  • MULTI_HPU — Birden fazla HPU üzerinde dağıtılmış.
  • MULTI_NEURON — Birden fazla Neuron çekirdeğinde dağıtılmış.
  • DEEPSPEED — DeepSpeed kullanımı.
  • FSDP — Tamamen Parçalı Veri Paralelliği (FSDP) kullanımı.
  • XLA — TorchXLA kullanımı.
  • MEGATRON_LM — Megatron-LM kullanımı.

sınıf accelerate.utils.DynamoBackend

< >

( *values )

Bir dynamo arka ucunu temsil eder (bkz. https://pytorch.org/docs/stable/torch.compiler.html).

Değerler:

  • HAYIR — torch dynamo kullanmayın.
  • EAGER — Çıkarılan GraphModule'ü çalıştırmak için PyTorch kullanır. Bu, TorchDynamo sorunlarını ayıklamada oldukça faydalıdır.
  • AOT_EAGER — Derleyici kullanmadan AotAutograd kullanır, yani AotAutograd’ın çıkarılmış ileri ve geri grafikleri için yalnızca PyTorch eager kullanılır. Bu, hata ayıklama için faydalıdır ve hızlanma sağlaması olası değildir.
  • INDUCTOR — Kod üretilmiş Triton çekirdeklerinden yararlanarak AotAutograd ve cudagraphs ile TorchInductor arka ucunu kullanır. Daha fazla bilgi
  • AOT_TS_NVFUSER — AotAutograd/TorchScript ile nvFuser. Daha fazla bilgi
  • NVPRIMS_NVFUSER — PrimTorch ile nvFuser. Daha fazla bilgi
  • CUDAGRAPHS — AotAutograd ile cudagraphs. Daha fazla bilgi
  • OFI — Torchscript optimize_for_inference kullanır. Yalnızca çıkarım. Daha fazla oku
  • FX2TRT — Çıkarım optimizasyonları için Nvidia TensorRT kullanır. Sadece çıkarım. Daha fazla okuyun
  • ONNXRT — CPU/GPU üzerinde çıkarım için ONNXRT kullanır. Sadece çıkarım. Daha fazla bilgi
  • TENSORRT — TensorRT'nin çıkarım optimizasyonları için çalıştırılmasında ONNXRT kullanır. Daha fazla bilgi
  • AOT_TORCHXLA_TRACE_ONCE — Eğitim için TorchDynamo optimizasyonuyla Pytorch/XLA kullanır. Daha fazla bilgi
  • TORCHXLA_TRACE_ONCE — Çıkarım için TorchDynamo optimizasyonu ile Pytorch/XLA kullanır. Daha fazla oku
  • TVM — Çıkarım optimizasyonları için Apache TVM kullanır. Daha fazla bilgi
  • HPU_BACKEND — Çıkarım optimizasyonları için HPU arka ucunu kullanır.
  • NEURON — Trainium/Inferentia için AWS Neuron arka ucunu kullanır.

sınıf accelerate.utils.LoggerType

< >

( *values )

Desteklenen deney izleyici türlerinden birini temsil eder

Değerler:

  • HEPSİ — ortamda mevcut olan ve desteklenen tüm izleyiciler
  • TENSORBOARD — Deney izleyici olarak TensorBoard
  • WANDB — deney izleyici olarak wandb
  • TRACKIO — deney izleyici olarak trackio
  • COMETML — comet_ml bir deney izleyici olarak
  • MLFLOW — deney izleyici olarak mlflow
  • CLEARML — deney izleyici olarak clearml
  • DVCLIVE — dvclive bir deney izleyici olarak
  • SWANLAB — deney izleyici olarak swanlab

sınıf accelerate.utils.PrecisionType

< >

( *values )

Yüzen nokta değerlerinde kullanılan bir hassasiyet türünü temsil eder

Değerler:

  • HAYIR — tam hassasiyet (FP32) kullanılarak
  • FP16 — yarım hassasiyet kullanımı
  • BF16 — beyin kayan nokta hassasiyeti kullanılarak

sınıf accelerate.utils.RNGType

< >

( *values )

sınıf accelerate.utils.SageMakerDistributedType

< >

( *values )

Dağıtık ortam türünü temsil eder.

Değerler:

  • YOK — Dağıtık bir ortam değil, yalnızca tek bir süreç.
  • DATA_PARALLEL — sagemaker dağıtık veri paralelliği kullanılarak.
  • MODEL_PARALLEL — sagemaker dağıtık model paralelliği kullanımı.

Kwargs

Bunlar, Accelerate'in arka planda yönettiği, PyTorch ekosistemi genelindeki belirli etkileşimler için yapılandırılabilir argümanlardır.

sınıf accelerate.AutocastKwargs

< >

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

Bu nesneyi Accelerator içinde kullanarak torch.autocast'in nasıl davrandığını özelleştirebilirsiniz. Her bir argüman hakkında daha fazla bilgi için bu bağlam yöneticisinin dokümantasyonuna bakın.

Örnek:

from accelerate import Accelerator
from accelerate.utils import AutocastKwargs

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

sınıf 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> )

Bu nesneyi, modelinizin torch.nn.parallel.DistributedDataParallel ile nasıl sarılacağını özelleştirmek için Accelerator içinde kullanın. Her bir argüman hakkında daha fazla bilgi için bu sarıcının belgelerine bakın.

Örnek:

from accelerate import Accelerator
from accelerate.utils import DistributedDataParallelKwargs

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

sınıf accelerate.GradScalerKwargs

< >

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

Bu nesneyi, karma hassasiyet davranışını, özellikle kullanılan torch.amp.GradScaler veya torch.cuda.amp.GradScaler'ın nasıl oluşturulacağını özelleştirmek için Accelerator içinde kullanın. Her argüman hakkında daha fazla bilgi için bu ölçekleyicinin belgelerine bakın.

Örnek:

from accelerate import Accelerator
from accelerate.utils import GradScalerKwargs

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

sınıf accelerate.InitProcessGroupKwargs

< >

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

Dağıtık süreçlerin başlatılmasını özelleştirmek için bu nesneyi Accelerator içinde kullanın. Her bir argüman hakkında daha fazla bilgi için bu yöntemin belgelerine başvurun.

Not: timeout değeri None olarak ayarlanırsa, varsayılan değer backend'in nasıl ayarlandığına göre belirlenir.

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

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

sınıf accelerate.utils.KwargsHandler

< >

( )

Bir dataclass için to_kwargs() metodunu uygulayan dahili mixin.

to_kwargs

< >

( )

Bu sınıfın varsayılan değerlerinden farklı değerlere sahip öznitelikleri içeren bir sözlük döndürür.

Eklentiler

Bunlar, Accelerator nesnesine iletilebilecek eklentilerdir. Dokümantasyonun başka bölümlerinde tanımlanmış olsalar da, kolaylık olması açısından hepsi burada görüntülenebilir:

sınıf 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 )

Parametreler

  • hf_ds_config (Any, varsayılan None) — DeepSpeed yapılandırma dosyasının yolu, sözlük veya accelerate.utils.deepspeed.HfDeepSpeedConfig sınıfının bir nesnesi.
  • gradient_accumulation_steps (int, varsayılan None) — Optimizatör durumlarının güncellenmesinden önce gradyanların biriktirileceği adım sayısı. Ayarlanmazsa, Accelerator'dan gelen değer doğrudan kullanılır.
  • gradient_clipping (float, varsayılan None) — Değer ile gradyan kırpma etkinleştirilir.
  • zero_stage (int, varsayılan None) — Olası seçenekler 0, 1, 2, 3'tür. Varsayılan değer ortam değişkeninden alınır.
  • is_train_batch_min (bool, varsayılan True) — Eğer hem eğitim hem de değerlendirme veri yükleyicileri belirtilirse, bu parametre train_batch_size değerini belirler.
  • offload_optimizer_device (str, varsayılan None) — Olası seçenekler none|cpu|nvme. Yalnızca ZeRO 2 ve 3 aşamalarıyla geçerlidir.
  • offload_param_device (str, varsayılan None) — Olası seçenekler none|cpu|nvme. Yalnızca ZeRO Stage 3 ile geçerlidir.
  • offload_optimizer_nvme_path (str, varsayılan None) — Olası seçenekler /nvme|/local_nvme'dir. Yalnızca ZeRO Stage 3 ile geçerlidir.
  • offload_param_nvme_path (str, varsayılan None) — Olası seçenekler /nvme|/local_nvme'dir. Yalnızca ZeRO Stage 3 ile geçerlidir.
  • zero3_init_flag (bool, varsayılan None) — 16-bit modelin kaydedilip kaydedilmeyeceğini belirtmek için bayrak. Yalnızca ZeRO Stage-3 ile geçerlidir.
  • zero3_save_16bit_model (bool, varsayılan None) — 16-bit modelin kaydedilip kaydedilmeyeceğini belirtmek için bayrak. Yalnızca ZeRO Stage-3 ile geçerlidir.
  • transformer_moe_cls_names (str, varsayılan None) — Virgülle ayrılmış Transformers MoE katman sınıfı adları listesi (büyük/küçük harfe duyarlı). Örneğin, MixtralSparseMoeBlock, Qwen2MoeSparseMoeBlock, JetMoEAttention, JetMoEBlock vb.

Bu eklenti, DeepSpeed'i entegre etmek için kullanılır.

deepspeed_config_process

< >

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

DeepSpeed yapılandırmasını, kwargs'daki değerlerle işleyin.

seç

< >

( _from_accelerator_state: bool = False )

HfDeepSpeedWeakref'in mevcut deepspeed eklenti yapılandırmasını kullanmasını ayarlar

sınıf 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 )

Parametreler

  • fsdp_version (int, varsayılan 1) — Kullanılacak FSDP sürümü. Varsayılan olarak 1'dir. 2 olarak ayarlanırsa, başlatıcı yapılandırmanın FSDP2 biçimine dönüştürülmüş olmasını bekler.
  • sharding_strategy (Union[str, torch.distributed.fsdp.ShardingStrategy], varsayılan 'FULL_SHARD') — Kullanılacak sharding stratejisi. Bir str veya torch.distributed.fsdp.fully_sharded_data_parallel.ShardingStrategy örneği olmalıdır. Bunun yerine reshard_after_forward kullanılması önerilir.
  • reshard_after_forward (Union[str, torch.distributed.fsdp.ShardingStrategy, bool], fsdp_version=1 için varsayılan olarak 'FULL_SHARD' ve fsdp_version=2 için True) — Kullanılacak sharding stratejisi. fsdp_version 2 olarak ayarlandıysa bool olmalı, aksi halde str veya torch.distributed.fsdp.fully_sharded_data_parallel.ShardingStrategy örneği olmalıdır.
  • backward_prefetch (Union[str, torch.distributed.fsdp.BackwardPrefetch], varsayılan 'NO_PREFETCH') — Kullanılacak geriye dönük ön yükleme stratejisi. Bir str veya torch.distributed.fsdp.fully_sharded_data_parallel.BackwardPrefetch örneği olmalıdır.
  • mixed_precision_policy (Optional[Union[dict, str, torch.distributed.fsdp.MixedPrecision, torch.distributed.fsdp.MixedPrecisionPolicy]], varsayılan None) — FullyShardedDataParallel ile karma hassasiyetli eğitimi etkinleştirmek için bir yapılandırma. Bir dict geçiriliyorsa, aşağıdaki anahtarlara sahip olmalıdır: param_dtype, reduce_dtype ve buffer_dtype; fsdp_version 2 olarak ayarlanmışsa bir torch.distributed.fsdp.MixedPrecisionPolicy örneği de olabilir. Bir str geçiriliyorsa, aşağıdaki değerlerden biri olmalıdır: fp8, fp16, bf16, fp32 ve param_dtype, reduce_dtype ile buffer_dtype değerlerini ayarlamak için kullanılır.
  • 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], varsayılan False) — Parametrelerin CPU'ya aktarılıp aktarılmayacağı. bool veya fsdp_version 2 olarak ayarlandıysa torch.distributed.fsdp.fully_sharded_data_parallel.CPUOffload ya da torch.distributed.fsdp.fully_sharded_data_parallel.CPUOffloadPolicy örneği olmalıdır.
  • ignored_modules (Optional[Union[Iterable[torch.nn.Module], str]], varsayılan None) — FSDP ile sarmalanırken yoksayılacak modüllerin listesi. Bir dize geçirildiğinde, modüller adlarına göre regex fullmatch kullanılarak eşleştirilir. fsdp_version 2 olarak ayarlanırsa, modüller parametrelere dönüştürülür ve kullanılır.
  • state_dict_type (Union[str, torch.distributed.fsdp.StateDictType], varsayılan 'FULL_STATE_DICT') — Kullanılacak state dict türü. Bir dize ise, full_state_dict, local_state_dict veya sharded_state_dict değerlerinden biri olmalıdır.
  • state_dict_config (Optional[Union[torch.distributed.fsdp.FullStateDictConfig, torch.distributed.fsdp.ShardedStateDictConfig], varsayılan None) — Kullanılacak state dict yapılandırması. Geçirilmezse state_dict_type değerine göre belirlenir.
  • optim_state_dict_config (Optional[Union[torch.distributed.fsdp.FullOptimStateDictConfig, torch.distributed.fsdp.ShardedOptimStateDictConfig], varsayılan None) — Kullanılacak optim state dict yapılandırması. Geçirilmezse state_dict_type değerine göre belirlenir.
  • limit_all_gathers (bool, varsayılan True) — FSDP'nin, çok fazla in-flight all-gather'ı önlemek için CPU iş parçacığını açıkça senkronize etmesini sağlar. Bu bool, yalnızca all-gather'ları zamanlayan parçalı stratejileri etkiler. Bunu etkinleştirmek, CUDA malloc yeniden deneme sayısını azaltmaya yardımcı olabilir.
  • use_orig_params (bool, varsayılan False) — Optimizatör için orijinal parametrelerin kullanılıp kullanılmayacağı.
  • param_init_fn (Optional[Callable[[torch.nn.Module], None], varsayılan None) — Şu anda meta cihazda bulunan modüllerin gerçek bir cihaza nasıl başlatılacağını belirten Callable[torch.nn.Module] -> None. Yalnızca sync_module_states True olduğunda geçerlidir. Varsayılan olarak, modül üzerinde to_empty çağıran bir lambda'dır.
  • sync_module_states (bool, varsayılan False) — Başlatma sonrasında tüm rank'lerde aynı olmasını sağlamak için her bir ayrı sarmalanmış FSDP biriminin modül parametrelerini rank 0'dan yayımlayıp yayımlamayacağı. cpu_ram_efficient_loading True olmadıkça varsayılan olarak False'dir; bu durumda zorunlu olarak etkinleştirilir.
  • forward_prefetch (bool, varsayılan False) — FSDP'nin, ileri (forward) geçişinde çalışırken bir sonraki all-gather işlemini açıkça önceden yüklemesini (prefetch) sağlar. Yalnızca statik grafiklerle kullanın.
  • activation_checkpointing (bool, varsayılan False) — Belirli katmanların aktivasyonlarını temizleyip geriye doğru yayılım sırasında yeniden hesaplayarak bellek kullanımını azaltmak için kullanılan bir tekniktir. Bu, fiilen ek hesaplama süresini azaltılmış bellek kullanımıyla takas eder.
  • cpu_ram_efficient_loading (bool, varsayılan None) — True ise, önceden eğitilmiş model kontrol noktasını yalnızca ilk süreç yüklerken diğer tüm süreçlerin ağırlıkları boş kalır. Yalnızca Transformers için geçerlidir. Bunu kullanırken sync_module_states True olmalıdır.
  • transformer_cls_names_to_wrap (Optional[List[str]], varsayılan None) — Sarmalanacak transformer katman sınıf adlarının listesi. Yalnızca auto_wrap_policy değeri transformer_based_wrap olduğunda geçerlidir.
  • min_num_params (Optional[int], varsayılan None) — Bir modülün sarılabilmesi için sahip olması gereken en az parametre sayısı. Yalnızca auto_wrap_policy size_based_wrap olduğunda geçerlidir.

Bu eklenti, tamamen parçalı veri paralelliğini etkinleştirmek için kullanılır.

set_auto_wrap_policy

< >

( model )

model verildiğinde, iletilen politika ve transformer_cls_to_wrap kullanılıp kullanılamayacağına dayanarak bir auto_wrap_policy oluşturur.

set_mixed_precision

< >

( mixed_precisionbuffer_autocast = Falseoverride = False )

FSDP için karma hassasiyet politikasını ayarlar

set_state_dict_type

< >

( state_dict_type = None )

StateDictType'ye göre state dict yapılandırmasını ayarlayın.

validate_mixed_precision_policy

< >

( )

Karışık hassasiyet politikasını doğrular; gerekmediyse import'ları getirmemek için soyutlanmıştır.

sınıf accelerate.utils.GradientAccumulationPlugin

< >

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

Parametreler

  • num_steps (int) — Gradyanların biriktirileceği adım sayısı.
  • adjust_scheduler (bool, isteğe bağlı, varsayılan True) — Biriktirilen adım sayısını dikkate alarak zamanlayıcı adımlarının ayarlanıp ayarlanmayacağını belirtir. Kullanılan zamanlayıcı gradyan biriktirme için ayarlanmadıysa True olmalıdır.
  • sync_with_dataloader (bool, isteğe bağlı, varsayılan True) — Dataloader'ın sonunda gradyanların ayarlanmasının senkronize edilip edilmeyeceği.
  • sync_each_batch (bool, isteğe bağlı) — Her veri grubunda gradyan ayarlarının senkronize edilip edilmeyeceğini belirtir. Dağıtık eğitimde gradyan biriktirme kullanılırken True olarak ayarlamak, hızdan ödün verilerek bellek gereksinimlerini azaltabilir.

Gradyan birikimi davranışını yapılandırmak için bir eklenti. Accelerator'a yalnızca gradient_accumulation_plugin veya gradient_accumulation_steps'ten birini iletebilirsiniz. İkisini birden iletmek bir hata oluşturur.

Örnek:

from accelerate.utils import GradientAccumulationPlugin

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

sınıf 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 )

Parametreler

  • tp_degree (int, varsayılan None) — Tensor paralelliği derecesi.
  • pp_degree (int, varsayılan None) — Hattın paralelleştirme derecesi.
  • num_micro_batches (int, varsayılan None) — Mikro-toplu (micro-batch) sayısı.
  • gradient_clipping (float, varsayılan None) — Küresel L2 Normuna dayalı gradyan kırpma değeri (devre dışı bırakmak için 0).
  • sequence_parallelism (bool, varsayılan None) — Sıralama paralelliğini etkinleştirir.
  • recompute_activations (bool, varsayılan None) — Seçici aktivasyon yeniden hesaplamayı etkinleştirir.
  • use_distributed_optimizer (bool, varsayılan None) — Dağıtık optimizasyonu etkinleştirir.
  • pipeline_model_parallel_split_rank (int, varsayılan None) — Encoder ve decoder'ın ayrılacağı rank.
  • num_layers_per_virtual_pipeline_stage (int, varsayılan None) — Sanal boru hattı aşaması başına katman sayısı.
  • is_train_batch_min (str, varsayılan True) — Eğer hem train hem de eval dataloader'ları belirtilirse, bu parametre micro_batch_size'ı belirler.
  • train_iters (int, varsayılan None) — Tüm eğitim çalışmaları boyunca eğitilecek örneklerin toplam sayısı. MegatronLMDummyScheduler kullanırken train-iters veya train-samples parametrelerinden birinin sağlanması gerektiğini unutmayın.
  • train_samples (int, varsayılan None) — Tüm eğitim çalışmaları boyunca eğitilecek örneklerin toplam sayısı. MegatronLMDummyScheduler kullanırken train-iters veya train-samples parametrelerinden birinin sağlanması gerektiğini unutmayın.
  • weight_decay_incr_style (str, varsayılan 'constant') — Ağırlık çürümesi artış fonksiyonu. seçenekler=[“constant”, “linear”, “cosine”].
  • start_weight_decay (float, varsayılan None) — L2 düzenlemesi için başlangıç ağırlık çürümesi katsayısı.
  • end_weight_decay (float, varsayılan None) — L2 düzenlemesi için çalışmanın sonundaki ağırlık çürümesi katsayısı.
  • lr_decay_style (str, varsayılan 'linear') — Öğrenme hızı azaltma fonksiyonu. seçenekler=[‘constant’, ‘linear’, ‘cosine’].
  • lr_decay_iters (int, varsayılan None) — Öğrenme oranı azalması için iterasyon sayısı. None ise varsayılan olarak train_iters kullanılır.
  • lr_decay_samples (int, varsayılan None) — Öğrenme oranı azalması için örnek sayısı. None ise varsayılan olarak train_samples kullanılır.
  • lr_warmup_iters (int, varsayılan None) — Öğrenme hızının doğrusal olarak ısınması için kullanılan iterasyon sayısı.
  • lr_warmup_samples (int, varsayılan None) — Öğrenme hızının doğrusal olarak ısınması için kullanılacak örnek sayısı.
  • lr_warmup_fraction (float, varsayılan None) — Öğrenme hızının doğrusal olarak ısınma (warmup) uygulanacağı lr-warmup-(iterasyon/örnek) oranı.
  • min_lr (float, varsayılan 0) — Öğrenme hızı için minimum değer. Zamanlayıcı, bu eşiğin altındaki değerleri kırpıyor.
  • consumed_samples (List, varsayılan None) — accelerator.prepare çağrısına giden dataloader'larla aynı sıradaki tüketilen örnek sayısı.
  • no_wd_decay_cond (Optional, varsayılan None) — Ağırlık çürümesini devre dışı bırakmak için koşul.
  • scale_lr_cond (Optional, varsayılan None) — Öğrenme hızını ölçeklemek için koşul.
  • lr_mult (float, varsayılan 1.0) — Öğrenme hızı çarpanı.
  • megatron_dataset_flag (bool, varsayılan False) — Veri setinin biçiminin Megatron-LM Indexed/Cached/MemoryMapped biçimini izleyip izlemediğini belirtir.
  • seq_length (int, varsayılan None) — İşlenecek maksimum dizi uzunluğu.
  • encoder_seq_length (int, varsayılan None) — Kodlayıcı için işlenecek maksimum dizi uzunluğu.
  • decoder_seq_length (int, varsayılan None) — İşlenecek maksimum decoder dizisi uzunluğu.
  • tensorboard_dir (str, varsayılan None) — Tensorboard günlüklerinin kaydedileceği yol.
  • set_all_logging_options (bool, varsayılan False) — Tüm günlük kaydı seçeneklerinin ayarlanıp ayarlanmayacağı.
  • eval_iters (int, varsayılan 100) — Değerlendirme için doğrulama/testte çalıştırılacak yineleme sayısı.
  • eval_interval (int, varsayılan 1000) — Doğrulama kümesinde değerlendirme çalıştırma aralığı.
  • return_logits (bool, varsayılan False) — Modelden logitlerin döndürülüp döndürülmeyeceği.
  • custom_train_step_class (Optional, varsayılan None) — Özel eğitim adımı sınıfı.
  • custom_train_step_kwargs (Optional, varsayılan None) — Özel eğitim adım kwargs'ları.
  • custom_model_provider_function (Optional, varsayılan None) — Özel model sağlayıcı işlevi.
  • custom_prepare_model_function (Optional, varsayılan None) — Özel model hazırlama işlevi.
  • custom_megatron_datasets_provider_function (Optional, varsayılan None) — Özel megatron train_valid_test veri setleri sağlayıcı işlevi.
  • custom_get_batch_function (Optional, varsayılan None) — Özel get batch işlevi.
  • custom_loss_function (Optional, varsayılan None) — Özel kayıp fonksiyonu.
  • other_megatron_args (Optional, varsayılan None) — Diğer Megatron-LM argümanları. Lütfen Megatron-LM'e başvurun.

Tensor, pipeline, sequence ve veri paralelliğini etkinleştirmek için Megatron-LM eklentisi. Ayrıca seçici aktivasyon yeniden hesaplama ve optimize edilmiş füzyonlu çekirdekleri etkinleştirmek için.

sınıf accelerate.utils.TorchDynamoPlugin

< >

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

Parametreler

  • backend (DynamoBackend, varsayılan None) — Geçerli bir Dynamo backend'i. Daha fazla ayrıntı için https://pytorch.org/docs/stable/torch.compiler.html adresine bakın.
  • mode (str, varsayılan None) — Olası seçenekler ‘default’, ‘reduce-overhead’ veya ‘max-autotune’dür.
  • fullgraph (bool, varsayılan None) — Modelin birkaç alt grafik (subgraph) olarak bölünmesine izin verilip verilmeyeceği.
  • dynamic (bool, varsayılan None) — İzleme için dinamik şekil kullanılıp kullanılmayacağı.
  • options (Any, varsayılan None) — Arka uca iletilecek seçeneklerin sözlüğü.
  • disable (bool, varsayılan False) — Test için torch.compile() işlevini devre dışı bırakır
  • use_regional_compilation (bool, varsayılan None) — torch.compile() soğuk başlangıç derleme süresini azaltmak için, aynı sınıfa ait tekrarlanan blokları hedefleyip bunları sıralı olarak derleyerek derleyici önbelleğine erişim sağlar. Örneğin, GPT2LMHeadModel içinde tekrarlanan blok/sınıf GPT2Block'tür ve model.transformer.h[0] olarak erişilebilir. Modelin geri kalanı (ör. model.lm_head) ayrı derlenir.

Bu eklenti, bir modeli PyTorch 2.0 ile derlemek için kullanılır

Yapılandırmalar

Bunlar, yapılandırılabilir ve ilgili entegrasyona aktarılabilecek sınıflardır

sınıf 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 )

Parametreler

  • load_in_8bit (bool, varsayılan False) — 8bit kuantizasyonu etkinleştirir.
  • llm_int8_threshold (float, varsayılan 6.0) — Outliner eşiğinin değeri. Yalnızca load_in_8bit=True olduğunda geçerlidir.
  • load_in_4bit (bool, varsayılan False) — 4bit kuantizasyonunu etkinleştirir.
  • bnb_4bit_quant_type (str, varsayılan fp4) — bnb.nn.Linear4Bit katmanlarında kuantizasyon veri türünü ayarlar. Seçenekler {‘fp4’,‘np4’}.
  • bnb_4bit_use_double_quant (bool, varsayılan False) — İlk kuantizasyondan gelen kuantizasyon sabitlerinin yeniden kuantize edildiği iç içe kuantizasyonu etkinleştirir.
  • bnb_4bit_compute_dtype (bool, varsayılan fp16) — Bu, giriş zamanından farklı olabilecek hesaplama türünü ayarlar. Örneğin, girdiler fp32 olabilir, ancak hızlandırma için hesaplama bf16 olarak ayarlanabilir. Seçenekler {‘fp32’,‘fp16’,‘bf16’}.
  • torch_dtype (torch.dtype, varsayılan None) — Bu, kalan kuantize edilmemiş katmanların dtype değerini ayarlar. bitsandbytes kütüphanesi, 8 bitlik modeller için değeri torch.float16 olarak ayarlamayı ve 4 bitlik modeller için hesaplama dtype'ı ile aynı dtype'ı kullanmayı önerir.
  • skip_modules (List[str], varsayılan None) — Kantizasyonunu yapmayacağımız modüllerin açık listesi. Bu modüllerin veri türü torch_dtype olacaktır.
  • keep_in_fp32_modules (List, varsayılan None) — Kantizasyon uygulamadığımız modüllerin açık listesi. Bunları torch.float32 olarak tutuyoruz.

BitsAndBytes 4bit ve 8bit kuantizasyonunu etkinleştirmek için bir eklenti

sınıf 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 )

Parametreler

  • split_batches (bool, varsayılan False) — Hızlandırıcının, veri yükleyicilerin (dataloaders) ürettiği partileri (batches) cihazlar arasında bölüp bölmeyeceğini belirtir. True ise, kullanılan gerçek parti boyutu her türlü dağıtık süreçte aynı olacaktır, ancak bu, kullandığınız num_processes sayısının tam bir katı olmalıdır. False ise, kullanılan gerçek parti boyutu, betiğinizde ayarlanan değerin süreç sayısıyla çarpımı olacaktır.
  • dispatch_batches (bool, varsayılan None) — True olarak ayarlanırsa, Accelerator tarafından hazırlanan dataloader yalnızca ana süreçte (main process) iterasyon edilir ve ardından toplar (batches) bölünerek her sürece yayınlanır. Altta yatan veri seti bir IterableDataset olan DataLoader için varsayılan olarak True, diğer durumlarda False olur.
  • even_batches (bool, varsayılan True) — True olarak ayarlanırsa, tüm süreçler arasındaki toplam batch boyutu veri setini tam olarak bölmediğinde, batch'in tüm işçiler arasında eşit şekilde bölünebilmesi için veri setinin başındaki örnekler kopyalanır.
  • use_seedable_sampler (bool, varsayılan False) — Tamamen tohumlanabilir rastgele bir örnekleyici (data_loader.SeedableRandomSampler) kullanılıp kullanılmayacağını belirtir. Farklı bir örneklemleme tekniği kullanarak eğitim sonuçlarının tamamen yeniden üretilebilir olmasını sağlar. Tohumdan tohuma sonuçlar farklılık gösterebilir, ancak birden fazla farklı tohum kullanılarak karşılaştırma yapıldığında ortalama farklar ihmal edilebilir düzeydedir. En iyi sonuçlar için set_seed() ile birlikte çalıştırılmalıdır.
  • data_seed (int, varsayılan None) — use_seedable_sampler kullanılırken altta yatan üreteç için kullanılacak tohum. None ise üreteç, torch'taki mevcut varsayılan tohumu kullanır.
  • non_blocking (bool, varsayılan False) — True olarak ayarlanırsa, Accelerator tarafından hazırlanan dataloader, hosttan cihaza engelsiz (non-blocking) aktarımları kullanır; bu da dataloader iletişimi ile hesaplama arasında daha iyi bir örtüşme sağlar. Doğru çalışması için hazırlanan dataloader'da pin_memory'nin True olarak ayarlanması önerilir.
  • use_stateful_dataloader (bool, varsayılan False) — True olarak ayarlanırsa, Accelerator tarafından hazırlanan dataloader, torchdata.StatefulDataLoader tarafından desteklenir. Bunun için StatefulDataLoader destekleyen 0.8.0 veya daha yüksek bir torchdata sürümünün yüklü olması gerekir.

accelerator.prepare çağrılırken dataloader ile ilgili öğeler için yapılandırma.

sınıf accelerate.utils.ProjectConfiguration

< >

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

Parametreler

  • project_dir (str, varsayılan None) — Verilerin saklanması için bir dizine giden yol.
  • logging_dir (str, varsayılan None) — Yerel olarak uyumlu kayıt tutucuların günlüklerini depolamak için bir dizin yolu. None ise, varsayılan olarak project_dir kullanılır.
  • automatic_checkpoint_naming (bool, varsayılan False) — Kaydedilen durumların otomatik olarak ardışık adlandırılıp adlandırılmayacağı.
  • total_limit (int, varsayılan None) — Tutulacak toplam kaydedilmiş durumların maksimum sayısı.
  • iteration (int, varsayılan 0) — Mevcut kaydetme yinelemesi.
  • save_on_each_node (bool, varsayılan False) — Çoklu düğümlü dağıtık eğitim sırasında modellerin ve kontrol noktalarının her düğümde mi yoksa yalnızca ana düğümde mi kaydedileceğini belirtir.

İç proje ihtiyaçlarına göre Accelerator nesnesi için yapılandırma.

set_directories

< >

( project_dir: str | None = None )

self.project_dir ve self.logging_dir değerlerini uygun değerlere ayarlar.

Ortam Değişkenleri

Farklı kullanım senaryoları için etkinleştirilebilen ortam değişkenleri şunlardır

  • ACCELERATE_DEBUG_MODE (str): accelerate'ın hata ayıklama modunda çalıştırılıp çalıştırılmayacağını belirtir. Daha fazla bilgi burada mevcuttur.

Veri Manipülasyonu ve İşlemleri

Bunlar, dağıtık süreçlerde kullanılabilen ancak aynı torch işlemlerini taklit eden veri işlemlerini içerir.

accelerate.utils.broadcast

< >

( tensorfrom_process: int = 0 )

Parametreler

  • tensor (iç içe list/tuple/dictionary of torch.Tensor) — Toplanacak veri.
  • from_process (int, isteğe bağlı, varsayılan 0) — Verinin gönderileceği süreç

Gömülü bir liste/tuple/dictionary içindeki tensörleri, tensörü tüm cihazlara özyinelemeli olarak yayınlayın.

accelerate.utils.broadcast_object_list

< >

( object_listfrom_process: int = 0 )

Parametreler

  • object_list (list of picklable objects) — Yayılacak nesnelerin listesi. Bu liste yerinde (inplace) değiştirilecektir.
  • from_process (int, isteğe bağlı, varsayılan 0) — Verinin gönderileceği süreç.

Bir süreçten diğer süreçlere picklenebilir nesneler listesini yayınlayın.

accelerate.utils.concatenate

< >

( datadim = 0 )

Parametreler

  • data (tensör listelerinden oluşan iç içe geçmiş liste/tuple/sözlük torch.Tensor) — Birleştirilecek veri.
  • dim (int, isteğe bağlı, varsayılan 0) — Birleştirme işlemi için boyut.

Aynı şekle sahip tensör listelerinden oluşan iç içe geçmiş bir liste/tuple/sözlükteki tensörleri özyinelemeli olarak birleştirir. Eğer yalnızca tek bir veri grubu varsa, olduğu gibi döndürülür.

accelerate.utils.convert_outputs_to_fp32

< >

( model_forward )

accelerate.utils.convert_to_fp32

< >

( tensor )

Parametreler

  • tensor (iç içe geçmiş liste/tuple/dictionary of torch.Tensor) — FP16/BF16'dan FP32'ye dönüştürülecek veri.

Gömülü liste/tuple/sözlük içindeki tensör elemanlarını FP16/BF16 hassasiyetinden FP32'ye özyinelemeli olarak dönüştürür.

accelerate.utils.gather

< >

( tensor )

Parametreler

  • tensor (iç içe list/tuple/dictionary of torch.Tensor) — Toplanacak veri.

Tüm cihazlardan, iç içe geçmiş bir liste/tuple/dictionary içindeki tensörleri özyinelemeli olarak topla.

accelerate.utils.gather_object

< >

( object: Any )

Parametreler

  • object (iç içe list/tuple/dictionary of picklable object) — Toplanacak veri.

Tüm cihazlardan, nesnelerin iç içe geçmiş bir liste/tuple/sözlüğündeki nesneyi özyinelemeli olarak toplayın.

accelerate.utils.get_grad_scaler

< >

( distributed_type: DistributedType = None**kwargs )

Parametreler

  • distributed_type (DistributedType, isteğe bağlı, varsayılan olarak None) — Dağıtık ortamın türü.
  • kwargs — Kullanılan GradScaler yapıcısı için ek argümanlar.

Ortam temelinde doğru GradScaler uygulamasını başlatıp onu döndüren genel bir yardımcı işlev.

accelerate.utils.get_mixed_precision_context_manager

< >

( native_amp: bool = Falseautocast_kwargs: AutocastKwargs = None )

Parametreler

  • native_amp (bool, isteğe bağlı, varsayılan False) — Karışık hassasiyetin gerçekten etkinleştirilip etkinleştirilmediği.

Karışık hassasiyetin otomatik dökümünü (autocast) için bir bağlam yöneticisi (context manager) döndürür

accelerate.utils.listify

< >

( data )

Parametreler

  • data (iç içe list/tuple/dictionary of torch.Tensor) — Düzenli sayılara dönüştürülecek veri.

İç içe geçmiş bir liste/tuple/sözlük içinde tensörleri özyinelemeli olarak bulur ve bunları sayı listesine dönüştürür.

accelerate.utils.pad_across_processes

< >

( tensordim = 0pad_index = 0pad_first = False )

Parametreler

  • tensor (iç içe list/tuple/dictionary of torch.Tensor) — Toplanacak veri.
  • dim (int, isteğe bağlı, varsayılan 0) — Doldurma yapılacak boyut.
  • pad_index (int, isteğe bağlı, varsayılan 0) — Doldurma için kullanılacak değer.
  • pad_first (bool, isteğe bağlı, varsayılan False) — Başta mı sonda mı dolgu yapılacağı.

Tüm cihazlardaki iç içe geçmiş liste/tuple/sözlük yapısındaki tensörleri, güvenli bir şekilde toplanabilmeleri için aynı boyuta kadar özyinelemeli olarak dolgu (padding) ile doldurun.

accelerate.utils.recursively_apply

< >

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

Parametreler

  • func (callable) — Özyinelemeli olarak uygulanacak işlev.
  • data (test_type tarafından kabul edilen nesnelerin iç içe geçmiş listesi/tuplüsü/sözlüğü) — func uygulamasının yapılacağı veri
  • *args — Paketlenmiş veriye uygulandığında func'ye iletilecek konumsal argümanlar.
  • test_type (Callable[[Any], bool], isteğe bağlı, varsayılan is_torch_tensor) — Verilen bir yaprak nesnesine func'in uygulanıp uygulanmayacağını belirleyen öngörü.
  • error_on_other_type (bool, isteğe bağlı, varsayılan False) — data açıldıktan sonra, test_type False döndüren bir nesne elde edilirse hata döndürülüp döndürülmeyeceğini belirtir. False ise, fonksiyon bu tür nesneleri değiştirmeden bırakır.
  • **kwargs (ek anahtar kelime argümanları, isteğe bağlı) — Paket açılmış verilere uygulandığında func'ye iletilecek anahtar kelime argümanları.

Belirli bir temel türden oluşan iç içe geçmiş bir liste/tuple/sözlük veri yapısında bir fonksiyonu özyinelemeli olarak uygulayın.

accelerate.utils.reduce

< >

( tensorreduction = 'mean'scale = 1.0 )

Parametreler

  • tensor (iç içe geçmiş liste/tuple/dictionary of torch.Tensor) — Azaltılacak veri.
  • reduction (str, isteğe bağlı, varsayılan "mean") — Bir azaltma yöntemi. “mean”, “sum”, “max” veya “none” olabilir
  • scale (float, isteğe bağlı) — reduce işleminden sonra uygulanacak varsayılan ölçekleme değeri, yalnızca XLA üzerinde geçerlidir.

Verilen bir işlemin ortalamasıyla, tensör listelerinden oluşan iç içe geçmiş bir liste/tuple/sözlükteki tensörleri tüm süreçler arasında özyinelemeli olarak indirger.

accelerate.utils.send_to_device

< >

( tensordevicenon_blocking = Falseskip_keys = None )

Parametreler

  • tensor (iç içe geçmiş liste/tuple/dictionary of torch.Tensor) — Belirli bir cihaza gönderilecek veri.
  • device (torch.device) — Verinin gönderileceği cihaz.
  • non_blocking (bool, isteğe bağlı, varsayılan False) — True ise, cihaza aktarım asenkron olarak gerçekleştirilir; bu, veri hareketini hesaplamayla eş zamanlı hale getirebilir. Yalnızca cihaz bunu desteklediğinde etkilidir (ör. CUDA).
  • skip_keys (str veya List[str], isteğe bağlı) — Verilen device'e gönderilmemesi gereken değerlere sahip bir tensor sözlüğündeki bir anahtar veya anahtar listesi. Bu anahtarlara sahip girdiler, orijinal cihazlarında bırakılır.

Bir tensör iç içe listesi/tuplü/dizisinin öğelerini verilen bir cihaza özyinelemeli olarak gönderir.

accelerate.utils.slice_tensors

< >

( datatensor_sliceprocess_index = Nonenum_processes = None )

Parametreler

  • data (iç içe list/tuple/dictionary of torch.Tensor) — Dilimlenecek veri.
  • tensor_slice (slice) — Alınacak dilim.

Gömülü bir liste/tuple/tensor sözlüğünde özyinelemeli olarak bir dilim alır.

Ortam Kontrolleri

Bu işlevler, işletim sistemi hakkında bilgi, destekleyebildiği özellikler ve belirli bağımlılıkların kurulu olup olmadığı dahil olmak üzere, mevcut çalışma ortamının durumunu kontrol eder.

accelerate.utils.is_bf16_available

< >

( ignore_tpu = False )

bf16'nin desteklenip desteklenmediğini kontrol eder, isteğe bağlı olarak TPU'yu yok sayar

accelerate.utils.is_mps_available

< >

( min_version = '1.12' )

MPS cihazının kullanılabilir olup olmadığını kontrol eder. Gerekli minimum sürüm 1.12'dir.

accelerate.utils.is_npu_available

( check_device = False )

torch_npu'nun yüklü olup olmadığını ve ortamda bir NPU bulunup bulunmadığını kontrol eder

accelerate.utils.is_torch_version

< >

( operation: strversion: str )

Parametreler

  • operation (str) — Bir operatörün, örneğin ">" veya "<=" gibi, dize gösterimi
  • version (str) — PyTorch'un dize (string) formatındaki sürümü

Mevcut PyTorch sürümünü, bir işlemle verilen bir referansla karşılaştırır.

accelerate.utils.is_torch_xla_available

( check_is_tpu = Falsecheck_is_gpu = False )

torch_xla'nın kullanılabilir olup olmadığını kontrol edin. torch xla yüklü bir ortamda yerel bir pytorch işi eğitmek için USE_TORCH_XLA değerini false olarak ayarlayın.

accelerate.utils.is_xpu_available

( check_device = False )

Stok PyTorch (>=2.7) üzerinden XPU hızlandırmasının kullanılabilir olup olmadığını ve ortamda bir XPU olup olmadığını kontrol eder

Ortam Manipülasyonu

accelerate.utils.patch_environment

< >

( **kwargs )

os.environ'a eklenen ve çıkışta kaldırılan her bir anahtar kelime argümanını içeren bir bağlam yöneticisi.

kwargs içindeki değerleri dizilere dönüştürür ve tüm anahtarları büyük harfe çevirir.

Örnek:

>>> 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

< >

( )

Ortam değişkenlerini geçici olarak temizleyecek bir bağlam yöneticisi.

Bu bağlam sonlandığında, önceki ortam değişkenleri geri yüklenecektir.

Örnek:

>>> 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' )

Parametreler

  • mixed_precision (str, isteğe bağlı, varsayılan “no”) — Kullanılacak Mixed Precision. “no”, “fp16” veya “bf16” değerlerinden biri olmalıdır.
  • save_location (str, isteğe bağlı, varsayılan default_json_config_file) — İsteğe bağlı özel kayıt konumu. accelerate launch kullanırken --config_file parametresine iletilmelidir. Varsayılan konum, huggingface önbellek klasörünün içindedir (~/.cache/huggingface) ancak HF_HOME ortam değişkeni ayarlanarak ve ardından accelerate/default_config.yaml yolu takip edilerek değiştirilebilir.

Yerel bir makinede, potansiyel olarak birden çok GPU ile kullanılacak temel bir küme yapılandırması oluşturur ve kaydeder. Yalnızca CPU'ya sahip bir makine ise CPU'yu da ayarlar.

🤗 Accelerate'i ilk kez yapılandırırken, accelerate config yerine hızlı yapılandırma için [~utils.write_basic_config] kullanılabilir.

accelerate.utils.set_numa_affinity

( local_process_index: intverbose: bool | None = None )

Parametreler

  • local_process_index (int) — Mevcut sunucudaki mevcut sürecin indeksi.
  • verbose (bool, isteğe bağlı) — Her işlem için yeni cpu çekirdeği atamasının yazdırılıp yazdırılmayacağı. ACCELERATE_DEBUG_MODE etkinleştirildiyse, varsayılan olarak True olur.

Güncel süreci belirli bir NUMA düğümüne atar. İdeal olarak, en verimli çalışma için her düğümde en az 2 CPU bulunması gerekir.

Bu sonuç, çağrılar arasında önbelleğe alınır. Bunu geçersiz kılmak istiyorsanız, lütfen accelerate.utils.environment.override_numa_afifnity kullanın.

accelerate.utils.environment.override_numa_affinity

< >

( local_process_index: intverbose: bool | None = None )

Parametreler

  • local_process_index (int) — Mevcut sunucudaki mevcut sürecin indeksi.
  • verbose (bool, isteğe bağlı) — Her CPU'nun atamasının günlüğe kaydedilip kaydedilmeyeceğini belirtir. ACCELERATE_DEBUG_MODE etkinleştirilmişse, varsayılan olarak True olur.

Mevcut işlem için ayarlanmış NUMA yakınlığını (affinity) geçersiz kılar. Bu işlem çok maliyetlidir ve ayarlanacak yakınlığın yeniden hesaplanmasını gerektirir; ideal olarak bunun yerine utils.environment.set_numa_affinity kullanılmalıdır.

accelerate.utils.purge_accelerate_environment

< >

( func_or_cls )

Dekorated sınıf veya fonksiyon tarafından ayarlanan accelerate ortam değişkenlerini temizlemek için dekoratör.

Bazı durumlarda, belirli sınıfların veya fonksiyonların çağrılması, accelerate ortam değişkenlerinin ayarlanmasına ve sonrasında temizlenmemesine neden olabilir. Bir örnek olarak, şunu çağırdığınızda:

TrainingArguments(fp16=True, …)

Aşağıdaki ortam değişkeni ayarlanacaktır:

ACCELERATE_MIXED_PRECISION=fp16

Bu durum, ortam değişkeninin TrainingArguments(fp16=False) parametresine öncelik tanıması nedeniyle sonraki kodu etkileyebilir. Bu durum, birim testleri için özellikle önemlidir; çünkü her bir testin diğer testler üzerinde yan etkilere sahip olmasını önlemek isteriz. Her testin ardından ortam değişkenlerinin temizlenmesini sağlamak için birim test fonksiyonunu veya tüm sınıfı bu dekoratörle süsleyin. Bu yöntem hem unittest.TestCase hem de normal sınıflar (pytest) için geçerlidir; üst sınıfı süslerken de çalışır.

Bellek

accelerate.find_executable_batch_size

< >

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

Parametreler

  • function (callable, opsiyonel) — Sarmalanacak bir işlev
  • starting_batch_size (int, isteğe bağlı) — Belleğe sığdırılmaya çalışılacak parti boyutu
  • reduce_batch_size_fn (callable, isteğe bağlı) — Bellek dışı (out-of-memory) hatası sonrasında yeni batch boyutunu belirlemek için kullanılan bir fonksiyon. Sağlanmazsa, her başarısızlıkta batch boyutu 0.9 ile çarpılır. Fonksiyon argüman almaz ve yeni (azaltılmış) batch boyutunu int olarak döndürmelidir.

function işlevini çalıştırmaya çalışacak temel bir dekoratör. Bellek dışı (out-of-memory) veya CUDNN ile ilgili istisnalar nedeniyle başarısız olursa, parti boyutu 0,9 ile çarpılır ve function işlevine aktarılır.

function, ilk argümanı olarak bir batch_size parametresi almalıdır.

Örnek:

>>> 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)

Modelleme

Bu yardımcılar, PyTorch modelleriyle etkileşime girme işleviyle ilgilidir

accelerate.utils.calculate_maximum_sizes

< >

( model: Module )

Modelin ve en büyük katmanının toplam boyutunu hesaplar

accelerate.utils.compute_module_sizes

< >

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

Belirtilen bir modelin her alt modülünün boyutunu hesaplayın.

accelerate.utils.extract_model_from_parallel

< >

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

Parametreler

  • model (torch.nn.Module) — Çıkarılacak model.
  • keep_fp32_wrapper (bool, isteğe bağlı) — Modelden karma hassasiyet kancalarının kaldırılıp kaldırılmayacağı.
  • keep_torch_compile (bool, isteğe bağlı) — Derlenmiş modelin sarmalayıcısının kaldırılıp kaldırılmayacağı.
  • recursive (bool, isteğe bağlı, varsayılan False) — model içindeki module.module durumlarının tümünü özyinelemeli olarak çıkarıp alt katmanları da özyinelemeli olarak sarmalayıp sarmalamayacağını belirtir; yalnızca üst düzey dağıtık kapsayıcıları değil.

Dönüş değeri

torch.nn.Module

Çıkarılan model.

Bir modeli dağıtık kapsayıcılarından çıkarın.

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 )

Parametreler

  • model (torch.nn.Module) — Analiz edilecek model.
  • max_memory (Dict, isteğe bağlı) — Bir sözlük: cihaz tanımlayıcısından maksimum belleğe. Ayarlanmazsa, kullanılabilir maksimum belleğe varsayılan olarak ayarlanır. Örnek: max_memory={0: "1GB"}.
  • no_split_module_classes (List[str], isteğe bağlı) — Cihazlar arasında asla bölünmemesi gereken katman sınıf adlarının listesi (örneğin, bir artımsal bağlantıya sahip herhangi bir katman).
  • dtype (str veya torch.dtype, isteğe bağlı) — Verilirse, ağırlıklar yüklenirken bu tipe dönüştürülür.
  • special_dtypes (Dict[str, Union[str, torch.device]], isteğe bağlı) — Verilirse, bazı özel ağırlıklar için dikkate alınacak özel dtypes (tüm ağırlıklar için varsayılan olarak kullanılan dtype'ı geçersiz kılar).
  • low_zero (bool, isteğe bağlı) — GPU 0 üzerindeki ağırlık sayısını en aza indirir; bu, GPU 0'ın başka işlemler (Transformers generate fonksiyonu gibi) için kullanılması durumunda kullanışlıdır.

Kullanılabilir her GPU'nun kullanımını dengeleyecek şekilde infer_auto_device_map() için bir max_memory sözlüğü hesaplayın.

Tüm hesaplama, model parametrelerinin boyutları ve dtypes'leri analiz edilerek yapılır. Sonuç olarak, model meta cihazında bulunabilir (init_empty_weights bağlam yöneticisi içinde başlatılmış gibi).

accelerate.utils.get_max_layer_size

< >

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

Parametreler

  • modules (List[Tuple[str, torch.nn.Module]]) — Maksimum katman boyutunu belirlemek istediğimiz adlandırılmış modüllerin listesi.
  • module_sizes (Dict[str, int]) — Her katman adını boyutuna eşleyen bir sözlük (compute_module_sizes tarafından oluşturulduğu gibi).
  • no_split_module_classes (List[str]) — Bölünmesini istemediğimiz katmanlar için sınıf adlarının listesi.

Dönüş değeri

Tuple[int, List[str]]

O maksimum boyutu gerçekleştiren katman adlarının listesiyle birlikte bir katmanın maksimum boyutu.

Adlandırılmış modüllerin listesini tarayacak ve bir tam katman tarafından kullanılan maksimum boyutu döndürecek yardımcı işlev. Bir katmanın tanımı şudur:

  • doğrudan alt öğesi olmayan bir modül (yalnızca parametreler ve tamponlar)
  • sınıf adı no_split_module_classes listesinde yer alan bir modül

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 )

Parametreler

  • model (torch.nn.Module) — Analiz edilecek model.
  • max_memory (Dict, isteğe bağlı) — Bir sözlük: cihaz tanımlayıcısından maksimum belleğe. Ayarlanmazsa, kullanılabilir maksimum belleğe varsayılan olarak ayarlanır. Örnek: max_memory={0: "1GB"}.
  • no_split_module_classes (List[str], isteğe bağlı) — Cihazlar arasında asla bölünmemesi gereken katman sınıf adlarının listesi (örneğin, bir artımsal bağlantıya sahip herhangi bir katman).
  • dtype (str veya torch.dtype, isteğe bağlı) — Verilirse, ağırlıklar yüklenirken bu tipe dönüştürülür.
  • special_dtypes (Dict[str, Union[str, torch.device]], isteğe bağlı) — Verilirse, bazı özel ağırlıklar için dikkate alınacak özel dtypes (tüm ağırlıklar için varsayılan olarak kullanılan dtype'ı geçersiz kılar).
  • verbose (bool, isteğe bağlı, varsayılan False) — Fonksiyon device_map oluştururken hata ayıklama ifadelerinin sağlanıp sağlanmayacağı.
  • clean_result (bool, isteğe bağlı, varsayılan True) — Aynı cihaza giden tüm alt modülleri bir araya getirerek sonuçtaki device_map’i temizler.
  • offload_buffers (bool, isteğe bağlı, varsayılan False) — CPU veya sabit diske aktarılan katmanlarda, parametrelerin yanı sıra tamponların da aktarılıp aktarılmayacağı.
  • fallback_allocation (bool, isteğe bağlı, varsayılan False) — Düzenli tahsis başarısız olduğunda, BFS kullanarak boyut sınırına sığan bir modül tahsis etmeye çalışır.

Belirli bir model için GPU'lara öncelik vererek, ardından CPU'ya ve son olarak diske taşınacak şekilde bir cihaz haritası hesaplayın,

  • GPU'lardan herhangi birinin kullanılabilir bellek sınırını aşmıyoruz.
  • CPU'ya taşınma gerekiyorsa, GPU 0'da, CPU'ya taşınan katmanlar arasında en büyük boyuta sahip olanı geri yerleştirmek için her zaman yer kalır.
  • CPU'ya taşınma gerekiyorsa, CPU'da kullanılabilir RAM'i aşmayız.
  • disk'e offload yapılması gerekiyorsa, disk'e offload edilen ve en büyük boyuta sahip olan katmanı geri almak için CPU'da her zaman yer kalır.

Tüm hesaplama, model parametrelerinin boyutları ve dtypes'leri analiz edilerek yapılır. Sonuç olarak, model meta cihazında bulunabilir (init_empty_weights bağlam yöneticisi içinde başlatılmış gibi).

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 )

Parametreler

  • model (torch.nn.Module) — Bir checkpoint yüklemek istediğimiz model.
  • checkpoint (str veya os.PathLike) — Yüklenmesi gereken klasör checkpoint. Şunlardan biri olabilir:
    • tüm bir model durum sözlüğünü içeren bir dosyanın yolunu
    • şarjlı bir kontrol noktasının dizinine sahip bir .json dosyasına giden bir yol
    • benzersiz bir .index.json dosyası ve bir kontrol noktasının parçalarını içeren bir klasöre giden yol.
    • benzersiz bir pytorch_model.bin veya model.safetensors dosyası içeren bir klasöre giden yol.
  • device_map (Dict[str, Union[int, str, torch.device]], isteğe bağlı) — Her alt modülün nereye yerleştirileceğini belirten bir eşleme. Her parametre/buffer adının ayrı ayrı tanımlanmasına gerek yoktur; bir modül adı bu eşlemeye dahil edildiğinde, o modülün tüm alt modülleri aynı cihaza gönderilir.
  • offload_folder (str veya os.PathLike, isteğe bağlı) — device_map içinde "disk" değeri varsa, ağırlıkların taşınacağı klasör.
  • dtype (str veya torch.dtype, isteğe bağlı) — Verilirse, ağırlıklar yüklenirken bu tipe dönüştürülür.
  • offload_state_dict (bool, isteğe bağlı, varsayılan False) — True ise, CPU durum sözlüğünün ağırlığı + en büyük parça sığmıyorsa CPU RAM'inin dolmasını önlemek için CPU durum sözlüğü geçici olarak sabit diske aktarılır.
  • offload_buffers (bool, isteğe bağlı, varsayılan False) — Disk'e taşınan ağırlıklara tamponların (buffers) dahil edilip edilmeyeceğini belirtir.
  • keep_in_fp32_modules(List[str], isteğe bağlı) — torch.float32 veri türünde tutulacak modüllerin listesi.
  • offload_8bit_bnb (bool, isteğe bağlı) — 8-bit modüllerin cpu/disk'e aktarılmasının (offload) etkinleştirilip etkinleştirilmeyeceği.
  • strict (bool, isteğe bağlı, varsayılan False) — Kontrol noktası state_dict anahtarlarının, modelin state_dict anahtarlarıyla tam olarak eşleşmesini katı bir şekilde zorlayıp zorlamayacağı.
  • full_state_dict (bool, isteğe bağlı, varsayılan True) — bu değer True olarak ayarlanırsa, yüklenen state_dict içindeki tüm tensörler toplanır. Yüklenen state_dict içinde ShardedTensor ve DTensor bulunmaz.
  • broadcast_from_rank0 (False, isteğe bağlı, varsayılan False) — seçenek True olduğunda, dağıtık bir ProcessGroup başlatılmalıdır. rank0, tam bir state_dict almalı ve state_dict içindeki tensörleri diğer rank'lere tek tek yayınlamalıdır. Diğer rank'ler, tensörleri alır ve modeldeki yerel shard'lara göre (uygulanabilirse) shard'lar.

Bir model içindeki (potansiyel olarak parçalara ayrılmış) kontrol noktasını yükler, ağırlıklar yükendikçe belirli bir cihaza gönderilebilir.

Cihazlar arasında yüklendikten sonra, modelin çalıştırılabilmesi için yine de modelinizde dispatch_model() çağrısını yapmanız gerekir. Kontrol noktası yükleme ve dağıtım işlemlerini tek bir çağrıda birleştirmek için load_checkpoint_and_dispatch() kullanın.

accelerate.utils.load_offloaded_weights

< >

( modelindexoffload_folder )

Parametreler

  • model (torch.nn.Module) — Ağırlıkların yükleneceği model.
  • index (dict) — Modelden taşınan her parametre için parametre adını ve ilgili metadata'yı içeren bir sözlük.
  • offload_folder (str) — Yerinden alınan ağırlıkların saklandığı klasör.

Ağırlıkları offload klasöründen modele yükler.

accelerate.utils.load_state_dict

< >

( checkpoint_filedevice_map = None )

Parametreler

  • checkpoint_file (str) — Yüklenmesi istenen checkpoint'in yolu.
  • device_map (Dict[str, Union[int, str, torch.device]], isteğe bağlı) — Her alt modülün nereye yerleştirileceğini belirten bir eşleme. Her parametre/buffer adının ayrı ayrı tanımlanmasına gerek yoktur; bir modül adı bu eşlemeye dahil edildiğinde, o modülün tüm alt modülleri aynı cihaza gönderilir.

Belirtilen dosyadan bir kontrol noktası yükleyin. Kontrol noktası safetensors biçimindeyse ve bir cihaz haritası geçiriliyorsa, ağırlıklar doğrudan GPU üzerinde hızlı bir şekilde yüklenebilir.

accelerate.utils.offload_state_dict

< >

( save_dir: str | os.PathLikestate_dict: dict )

Parametreler

  • save_dir (str veya os.PathLike) — State dict'in taşınacağı dizin.
  • state_dict (Dict[str, torch.Tensor]) — Yerinden alınacak tensörlerin sözlüğü.

Belirtilen klasörde bir durum sözlüğünü (state dict) dışa aktarın.

accelerate.utils.retie_parameters

< >

( modeltied_params )

Parametreler

  • model (torch.nn.Module) — Parametrelerin yeniden bağlanacağı model.
  • tied_params (List[List[str]]) — find_tied_parameters ile elde edilen, parametre adını bağlı parametre adına eşleyen bir eşleme.

Reties, verilen bir modelde bağlantı kopmuşsa (örneğin hook'lar eklenirken) bağlı parametreleri yeniden bağlar.

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 )

Parametreler

  • module (torch.nn.Module) — Taşınması istenen tensörün içinde bulunduğu modül.
  • tensor_name (str) — Parametre/buffer'ın tam adı.
  • device (int, str veya torch.device) — Tensörün ayarlanacağı cihaz.
  • value (torch.Tensor, isteğe bağlı) — Tensörün değeri (meta cihazından başka bir cihaza geçerken kullanışlıdır).
  • dtype (torch.dtype, isteğe bağlı) — Geçirildiğinde, parametrenin değeri bu dtype'e dönüştürülür. Aksi takdirde, value modeldeki mevcut parametrenin dtype'una dönüştürülür.
  • fp16_statistics (torch.HalfTensor, isteğe bağlı) — Modülde ayarlanacak fp16 istatistikleri listesi, 8 bit model serileştirmesi için kullanılır.
  • tied_params_map (Dict[int, Dict[torch.device, torch.Tensor]], isteğe bağlı, varsayılan None) — Güncel veri işaretçilerinden, cihazlara göre zaten dağıtılmış bağlı ağırlıklara giden sözlüklere bir eşleme. Belirli bir yürütme cihazı için bu parametre, belleği çoğaltmak yerine, paylaşılan bir ağırlığın cihazdaki ilk kullanılabilir işaretçisini diğerleri için yeniden kullanmak amacıyla faydalıdır.
  • non_blocking (bool, isteğe bağlı, varsayılan False) — True ise, mümkünse cihaz aktarımı ana makineye göre asenkron olarak gerçekleşir.
  • clear_cache (bool, isteğe bağlı, varsayılan True) — Tensör cihazda ayarlandıktan sonra cihaz önbelleğinin temizlenip temizlenmeyeceği.

Bir modülün belirli bir cihazda verilen tensörünü (parametre veya tampon) ayarlamak için yardımcı bir işlev (not: param.to(device) parametreye bağlı olmayan yeni bir tensör oluşturduğundan, bu işleve ihtiyacımız var).

accelerate.utils.get_module_children_bottom_up

< >

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

Parametreler

  • model (torch.nn.Module) — çocuklarının alınacağı model

Dönüş değeri

list[torch.nn.Module]

model'in alt modüllerinin alttan üste sıralı listesi. Son öğe, model'in kendisidir.

Modeli alttan üste sırayla gezin ve çocuk modülleri bu sırada döndür.

Paralel

Bunlar, paralel çalışırken kullanılması gereken genel yardımcılar arasında yer alır.

accelerate.utils.extract_model_from_parallel

< >

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

Parametreler

  • model (torch.nn.Module) — Çıkarılacak model.
  • keep_fp32_wrapper (bool, isteğe bağlı) — Modelden karma hassasiyet kancalarının kaldırılıp kaldırılmayacağı.
  • keep_torch_compile (bool, isteğe bağlı) — Derlenmiş modelin sarmalayıcısının kaldırılıp kaldırılmayacağı.
  • recursive (bool, isteğe bağlı, varsayılan False) — model içindeki module.module durumlarının tümünü özyinelemeli olarak çıkarıp alt katmanları da özyinelemeli olarak sarmalayıp sarmalamayacağını belirtir; yalnızca üst düzey dağıtık kapsayıcıları değil.

Dönüş değeri

torch.nn.Module

Çıkarılan model.

Bir modeli dağıtık kapsayıcılarından çıkarın.

accelerate.utils.save

< >

( objfsave_on_each_node: bool = Falsesafe_serialization: bool = False )

Parametreler

  • obj — Kaydedilecek veri
  • f — Verileri kaydetmek için kullanılacak dosya (veya dosya benzeri nesne)
  • save_on_each_node (bool, isteğe bağlı, varsayılan False) — Yalnızca küresel ana süreçte kaydetme
  • safe_serialization (bool, isteğe bağlı, varsayılan False) — obj nesnesinin safetensors ile mi yoksa geleneksel PyTorch yöntemiyle (bu yöntem pickle kullanır) mı kaydedileceğini belirtir.

Verileri diske kaydedin. torch.save() yerine kullanın.

accelerate.utils.load

< >

( fmap_location = None**kwargs )

Parametreler

  • f — Verileri yüklemek için kullanılacak dosya (veya dosya benzeri nesne)
  • map_location — depolama konumlarının nasıl yeniden eşleneceğini belirten bir işlev, torch.device, dize veya sözlük
  • **kwargs — torch.load() fonksiyonuna iletilecek ek anahtar kelime argümanları.

torch.load() ile uyumlu, torch sürümü 2.4.0 veya daha yüksekse weights_only parametresinin kullanılmasına olanak tanıyan doğrudan ikame. Aksi halde bu parametre yok sayılır.

Ayrıca numpy dizileri için bir istisna ekleyecek (ve ardından kaldıracak)

accelerate.utils.wait_for_everyone

< >

( )

Betik içinde bir blokaj noktası tanıtır ve devam etmeden önce tüm süreçlerin bu noktaya ulaştığından emin olur.

Tüm süreçlerin bu talimata ulaşacağından emin olun, aksi takdirde süreçlerinizden biri sonsuza kadar beklemeye geçer.

Rastgele

Bu yardımcılar, tüm rastgele durumların ayarlanması ve senkronize edilmesiyle ilgilidir.

accelerate.utils.set_seed

< >

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

Parametreler

  • seed (int) — Ayarlanacak tohum.
  • device_specific (bool, isteğe bağlı, varsayılan False) — Tohumun her cihazda self.process_index ile hafifçe farklılaştırılıp farklılaştırılmayacağı.
  • deterministic (bool, isteğe bağlı, varsayılan False) — Mevcutsa deterministik algoritmaların kullanılıp kullanılmayacağı. Eğitimi yavaşlatabilir.

random, numpy ve torch içinde tohumu ayarlamak için tekrarlanabilir davranış sağlayan yardımcı işlev.

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

Bunlar, PyTorch'u XLA ile kullanırken faydalı olan yardımcılar arasında yer alır.

accelerate.utils.install_xla

< >

( upgrade: bool = False )

Parametreler

  • upgrade (bool, isteğe bağlı, varsayılan False) — torch'ün yükseltilip en son torch_xla tekerleklerinin kurulup kurulmayacağı.

Google Colaboratory'de torch sürümüne göre uygun xla tekerleklerini (wheels) yüklemek için yardımcı işlev.

Örnek:

>>> from accelerate.utils import install_xla

>>> install_xla(upgrade=True)

Model ağırlıklarını yükleme

Bunlar, kontrol noktalarını yüklemek için faydalı olan yardımcılar arasında yer alır.

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 )

Parametreler

  • model (torch.nn.Module) — Bir checkpoint yüklemek istediğimiz model.
  • checkpoint (str veya os.PathLike) — Yüklenmesi gereken klasör checkpoint. Şunlardan biri olabilir:
    • tüm bir model durum sözlüğünü içeren bir dosyanın yolunu
    • şarjlı bir kontrol noktasının dizinine sahip bir .json dosyasına giden bir yol
    • benzersiz bir .index.json dosyası ve bir kontrol noktasının parçalarını içeren bir klasöre giden yol.
    • benzersiz bir pytorch_model.bin veya model.safetensors dosyası içeren bir klasöre giden yol.
  • device_map (Dict[str, Union[int, str, torch.device]], isteğe bağlı) — Her alt modülün nereye yerleştirileceğini belirten bir eşleme. Her parametre/buffer adının ayrı ayrı tanımlanmasına gerek yoktur; bir modül adı bu eşlemeye dahil edildiğinde, o modülün tüm alt modülleri aynı cihaza gönderilir.
  • offload_folder (str veya os.PathLike, isteğe bağlı) — device_map içinde "disk" değeri varsa, ağırlıkların taşınacağı klasör.
  • dtype (str veya torch.dtype, isteğe bağlı) — Verilirse, ağırlıklar yüklenirken bu tipe dönüştürülür.
  • offload_state_dict (bool, isteğe bağlı, varsayılan False) — True ise, CPU durum sözlüğünün ağırlığı + en büyük parça sığmıyorsa CPU RAM'inin dolmasını önlemek için CPU durum sözlüğü geçici olarak sabit diske aktarılır.
  • offload_buffers (bool, isteğe bağlı, varsayılan False) — Disk'e taşınan ağırlıklara tamponların (buffers) dahil edilip edilmeyeceğini belirtir.
  • keep_in_fp32_modules(List[str], isteğe bağlı) — torch.float32 veri türünde tutulacak modüllerin listesi.
  • offload_8bit_bnb (bool, isteğe bağlı) — 8-bit modüllerin cpu/disk'e aktarılmasının (offload) etkinleştirilip etkinleştirilmeyeceği.
  • strict (bool, isteğe bağlı, varsayılan False) — Kontrol noktası state_dict anahtarlarının, modelin state_dict anahtarlarıyla tam olarak eşleşmesini katı bir şekilde zorlayıp zorlamayacağı.
  • full_state_dict (bool, isteğe bağlı, varsayılan True) — bu değer True olarak ayarlanırsa, yüklenen state_dict içindeki tüm tensörler toplanır. Yüklenen state_dict içinde ShardedTensor ve DTensor bulunmaz.
  • broadcast_from_rank0 (False, isteğe bağlı, varsayılan False) — seçenek True olduğunda, dağıtık bir ProcessGroup başlatılmalıdır. rank0, tam bir state_dict almalı ve state_dict içindeki tensörleri diğer rank'lere tek tek yayınlamalıdır. Diğer rank'ler, tensörleri alır ve modeldeki yerel shard'lara göre (uygulanabilirse) shard'lar.

Bir model içindeki (potansiyel olarak parçalara ayrılmış) kontrol noktasını yükler, ağırlıklar yükendikçe belirli bir cihaza gönderilebilir.

Cihazlar arasında yüklendikten sonra, modelin çalıştırılabilmesi için yine de modelinizde dispatch_model() çağrısını yapmanız gerekir. Kontrol noktası yükleme ve dağıtım işlemlerini tek bir çağrıda birleştirmek için load_checkpoint_and_dispatch() kullanın.

Kantizasyon

Bunlar, modelin kuantize edilmesi için faydalı olan yardımcılar arasında yer alır.

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

Parametreler

  • model (torch.nn.Module) — Girdi modeli. Model zaten yüklü olabilir veya meta cihazda olabilir
  • bnb_quantization_config (BnbQuantizationConfig) — bitsandbytes nicelleştirme parametreleri
  • weights_location (str veya os.PathLike) — Yüklenmesi gereken weights_location klasörü. Şunlardan biri olabilir:
    • tüm bir model durum sözlüğünü içeren bir dosyanın yolunu
    • şarjlı bir kontrol noktasının dizinine sahip bir .json dosyasına giden bir yol
    • benzersiz bir .index.json dosyası ve bir kontrol noktasının parçalarını içeren bir klasöre giden yol.
    • benzersiz bir pytorch_model.bin dosyası içeren bir klasöre giden yol.
  • device_map (Dict[str, Union[int, str, torch.device]], isteğe bağlı) — Her alt modülün nereye yerleştirileceğini belirten bir eşleme. Her parametre/buffer adının ayrı ayrı tanımlanmasına gerek yoktur; bir modül adı bu eşlemeye dahil edildiğinde, o modülün tüm alt modülleri aynı cihaza gönderilir.
  • no_split_module_classes (List[str], isteğe bağlı) — Cihazlar arasında asla bölünmemesi gereken katman sınıf adlarının listesi (örneğin, bir artımsal bağlantıya sahip herhangi bir katman).
  • max_memory (Dict, isteğe bağlı) — Bir sözlük, cihaz tanımlayıcısından maksimum belleğe. Ayarlanmazsa, kullanılabilir maksimum belleğe varsayılan olarak ayarlanır.
  • offload_folder (str veya os.PathLike, isteğe bağlı) — device_map içinde "disk" değeri varsa, ağırlıkların taşınacağı klasör.
  • offload_state_dict (bool, isteğe bağlı, varsayılan False) — True ise, CPU durum sözlüğünün ağırlığı + en büyük parça sığmıyorsa CPU RAM'inin dolmasını önlemek için CPU durum sözlüğü geçici olarak sabit diske aktarılır.

Dönüş değeri

torch.nn.Module

Kantize edilmiş model

Bu fonksiyon, bnb_quantization_config ile iletilen ilgili yapılandırma ile girdi modelini kuantize eder. Model meta cihazındaysa, ağırlıklar device_map ile iletilene göre yüklenir ve dağıtılır. Model zaten yüklendiyse, model kuantize edilir ve GPU'ya yerleştirilir,

Update on GitHub