Accelerate documentation
Yardımcı işlevler ve sınıflar
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
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.
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ı.
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.
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
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
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
< source >( 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.
sınıf accelerate.DistributedDataParallelKwargs
< source >( 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.
sınıf accelerate.GradScalerKwargs
< source >( 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.
sınıf accelerate.InitProcessGroupKwargs
< source >( 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.
Bir dataclass için to_kwargs() metodunu uygulayan dahili mixin.
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
< source >( 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ılanNone) — DeepSpeed yapılandırma dosyasının yolu, sözlük veyaaccelerate.utils.deepspeed.HfDeepSpeedConfigsınıfının bir nesnesi. - gradient_accumulation_steps (
int, varsayılanNone) — 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ılanNone) — Değer ile gradyan kırpma etkinleştirilir. - zero_stage (
int, varsayılanNone) — 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ılanTrue) — Eğer hem eğitim hem de değerlendirme veri yükleyicileri belirtilirse, bu parametretrain_batch_sizedeğerini belirler. - offload_optimizer_device (
str, varsayılanNone) — Olası seçenekler none|cpu|nvme. Yalnızca ZeRO 2 ve 3 aşamalarıyla geçerlidir. - offload_param_device (
str, varsayılanNone) — Olası seçenekler none|cpu|nvme. Yalnızca ZeRO Stage 3 ile geçerlidir. - offload_optimizer_nvme_path (
str, varsayılanNone) — Olası seçenekler /nvme|/local_nvme'dir. Yalnızca ZeRO Stage 3 ile geçerlidir. - offload_param_nvme_path (
str, varsayılanNone) — Olası seçenekler /nvme|/local_nvme'dir. Yalnızca ZeRO Stage 3 ile geçerlidir. - zero3_init_flag (
bool, varsayılanNone) — 16-bit modelin kaydedilip kaydedilmeyeceğini belirtmek için bayrak. Yalnızca ZeRO Stage-3 ile geçerlidir. - zero3_save_16bit_model (
bool, varsayılanNone) — 16-bit modelin kaydedilip kaydedilmeyeceğini belirtmek için bayrak. Yalnızca ZeRO Stage-3 ile geçerlidir. - transformer_moe_cls_names (
str, varsayılanNone) — Virgülle ayrılmış Transformers MoE katman sınıfı adları listesi (büyük/küçük harfe duyarlı). Örneğin,MixtralSparseMoeBlock,Qwen2MoeSparseMoeBlock,JetMoEAttention,JetMoEBlockvb.
Bu eklenti, DeepSpeed'i entegre etmek için kullanılır.
deepspeed_config_process
< source >( prefix = ''mismatches = Noneconfig = Nonemust_match = True**kwargs )
DeepSpeed yapılandırmasını, kwargs'daki değerlerle işleyin.
HfDeepSpeedWeakref'in mevcut deepspeed eklenti yapılandırmasını kullanmasını ayarlar
sınıf accelerate.FullyShardedDataParallelPlugin
< source >( 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ılan1) — 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. Birstrveyatorch.distributed.fsdp.fully_sharded_data_parallel.ShardingStrategyörneği olmalıdır. Bunun yerinereshard_after_forwardkullanılması önerilir. - reshard_after_forward (
Union[str, torch.distributed.fsdp.ShardingStrategy, bool],fsdp_version=1için varsayılan olarak'FULL_SHARD'vefsdp_version=2içinTrue) — Kullanılacak sharding stratejisi.fsdp_version2 olarak ayarlandıysa bool olmalı, aksi haldestrveyatorch.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. Birstrveyatorch.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ılanNone) — FullyShardedDataParallel ile karma hassasiyetli eğitimi etkinleştirmek için bir yapılandırma. Birdictgeçiriliyorsa, aşağıdaki anahtarlara sahip olmalıdır:param_dtype,reduce_dtypevebuffer_dtype;fsdp_version2 olarak ayarlanmışsa birtorch.distributed.fsdp.MixedPrecisionPolicyörneği de olabilir. Birstrgeçiriliyorsa, aşağıdaki değerlerden biri olmalıdır: fp8, fp16, bf16, fp32 veparam_dtype,reduce_dtypeilebuffer_dtypedeğerlerini ayarlamak için kullanılır. - auto_wrap_policy (
Optional(Union[Callable, Literal["transformer_based_wrap", "size_based_wrap", "no_wrap"]]), defaults toNO_WRAP) -- A callable or string specifying a policy to recursively wrap layers with FSDP. If a string, it must be one oftransformer_based_wrap,size_based_wrap, orno_wrap. Seetorch.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ılanFalse) — Parametrelerin CPU'ya aktarılıp aktarılmayacağı.boolveyafsdp_version2 olarak ayarlandıysatorch.distributed.fsdp.fully_sharded_data_parallel.CPUOffloadya datorch.distributed.fsdp.fully_sharded_data_parallel.CPUOffloadPolicyörneği olmalıdır. - ignored_modules (
Optional[Union[Iterable[torch.nn.Module], str]], varsayılanNone) — 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_version2 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_dictveyasharded_state_dictdeğerlerinden biri olmalıdır. - state_dict_config (
Optional[Union[torch.distributed.fsdp.FullStateDictConfig, torch.distributed.fsdp.ShardedStateDictConfig], varsayılanNone) — Kullanılacak state dict yapılandırması. Geçirilmezsestate_dict_typedeğerine göre belirlenir. - optim_state_dict_config (
Optional[Union[torch.distributed.fsdp.FullOptimStateDictConfig, torch.distributed.fsdp.ShardedOptimStateDictConfig], varsayılanNone) — Kullanılacak optim state dict yapılandırması. Geçirilmezsestate_dict_typedeğerine göre belirlenir. - limit_all_gathers (
bool, varsayılanTrue) — 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ılanFalse) — Optimizatör için orijinal parametrelerin kullanılıp kullanılmayacağı. - param_init_fn (
Optional[Callable[[torch.nn.Module], None], varsayılanNone) — Şu anda meta cihazda bulunan modüllerin gerçek bir cihaza nasıl başlatılacağını belirtenCallable[torch.nn.Module] -> None. Yalnızcasync_module_statesTrueolduğunda geçerlidir. Varsayılan olarak, modül üzerindeto_emptyçağıran birlambda'dır. - sync_module_states (
bool, varsayılanFalse) — 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_loadingTrueolmadıkça varsayılan olarakFalse'dir; bu durumda zorunlu olarak etkinleştirilir. - forward_prefetch (
bool, varsayılanFalse) — 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ılanFalse) — 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ılanNone) — 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ırkensync_module_statesTrueolmalıdır. - transformer_cls_names_to_wrap (
Optional[List[str]], varsayılanNone) — Sarmalanacak transformer katman sınıf adlarının listesi. Yalnızcaauto_wrap_policydeğeritransformer_based_wrapolduğunda geçerlidir. - min_num_params (
Optional[int], varsayılanNone) — Bir modülün sarılabilmesi için sahip olması gereken en az parametre sayısı. Yalnızcaauto_wrap_policysize_based_wrapolduğunda geçerlidir.
Bu eklenti, tamamen parçalı veri paralelliğini etkinleştirmek için kullanılır.
model verildiğinde, iletilen politika ve transformer_cls_to_wrap kullanılıp kullanılamayacağına dayanarak bir auto_wrap_policy oluşturur.
FSDP için karma hassasiyet politikasını ayarlar
StateDictType'ye göre state dict yapılandırmasını ayarlayın.
Karışık hassasiyet politikasını doğrular; gerekmediyse import'ları getirmemek için soyutlanmıştır.
sınıf accelerate.utils.GradientAccumulationPlugin
< source >( 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ılanTrue) — 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ıysaTrueolmalıdır. - sync_with_dataloader (
bool, isteğe bağlı, varsayılanTrue) — 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ırkenTrueolarak 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.
sınıf accelerate.utils.MegatronLMPlugin
< source >( 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ılanNone) — Tensor paralelliği derecesi. - pp_degree (
int, varsayılanNone) — Hattın paralelleştirme derecesi. - num_micro_batches (
int, varsayılanNone) — Mikro-toplu (micro-batch) sayısı. - gradient_clipping (
float, varsayılanNone) — Küresel L2 Normuna dayalı gradyan kırpma değeri (devre dışı bırakmak için 0). - sequence_parallelism (
bool, varsayılanNone) — Sıralama paralelliğini etkinleştirir. - recompute_activations (
bool, varsayılanNone) — Seçici aktivasyon yeniden hesaplamayı etkinleştirir. - use_distributed_optimizer (
bool, varsayılanNone) — Dağıtık optimizasyonu etkinleştirir. - pipeline_model_parallel_split_rank (
int, varsayılanNone) — Encoder ve decoder'ın ayrılacağı rank. - num_layers_per_virtual_pipeline_stage (
int, varsayılanNone) — Sanal boru hattı aşaması başına katman sayısı. - is_train_batch_min (
str, varsayılanTrue) — Eğer hem train hem de eval dataloader'ları belirtilirse, bu parametremicro_batch_size'ı belirler. - train_iters (
int, varsayılanNone) — Tüm eğitim çalışmaları boyunca eğitilecek örneklerin toplam sayısı.MegatronLMDummySchedulerkullanırken train-iters veya train-samples parametrelerinden birinin sağlanması gerektiğini unutmayın. - train_samples (
int, varsayılanNone) — Tüm eğitim çalışmaları boyunca eğitilecek örneklerin toplam sayısı.MegatronLMDummySchedulerkullanı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ılanNone) — L2 düzenlemesi için başlangıç ağırlık çürümesi katsayısı. - end_weight_decay (
float, varsayılanNone) — 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ılanNone) — Öğrenme oranı azalması için iterasyon sayısı. None ise varsayılan olaraktrain_iterskullanılır. - lr_decay_samples (
int, varsayılanNone) — Öğrenme oranı azalması için örnek sayısı. None ise varsayılan olaraktrain_sampleskullanılır. - lr_warmup_iters (
int, varsayılanNone) — Öğrenme hızının doğrusal olarak ısınması için kullanılan iterasyon sayısı. - lr_warmup_samples (
int, varsayılanNone) — Öğrenme hızının doğrusal olarak ısınması için kullanılacak örnek sayısı. - lr_warmup_fraction (
float, varsayılanNone) — Öğrenme hızının doğrusal olarak ısınma (warmup) uygulanacağı lr-warmup-(iterasyon/örnek) oranı. - min_lr (
float, varsayılan0) — Öğ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ılanNone) —accelerator.prepareçağrısına giden dataloader'larla aynı sıradaki tüketilen örnek sayısı. - no_wd_decay_cond (
Optional, varsayılanNone) — Ağırlık çürümesini devre dışı bırakmak için koşul. - scale_lr_cond (
Optional, varsayılanNone) — Öğrenme hızını ölçeklemek için koşul. - lr_mult (
float, varsayılan1.0) — Öğrenme hızı çarpanı. - megatron_dataset_flag (
bool, varsayılanFalse) — Veri setinin biçiminin Megatron-LM Indexed/Cached/MemoryMapped biçimini izleyip izlemediğini belirtir. - seq_length (
int, varsayılanNone) — İşlenecek maksimum dizi uzunluğu. - encoder_seq_length (
int, varsayılanNone) — Kodlayıcı için işlenecek maksimum dizi uzunluğu. - decoder_seq_length (
int, varsayılanNone) — İşlenecek maksimum decoder dizisi uzunluğu. - tensorboard_dir (
str, varsayılanNone) — Tensorboard günlüklerinin kaydedileceği yol. - set_all_logging_options (
bool, varsayılanFalse) — Tüm günlük kaydı seçeneklerinin ayarlanıp ayarlanmayacağı. - eval_iters (
int, varsayılan100) — Değerlendirme için doğrulama/testte çalıştırılacak yineleme sayısı. - eval_interval (
int, varsayılan1000) — Doğrulama kümesinde değerlendirme çalıştırma aralığı. - return_logits (
bool, varsayılanFalse) — Modelden logitlerin döndürülüp döndürülmeyeceği. - custom_train_step_class (
Optional, varsayılanNone) — Özel eğitim adımı sınıfı. - custom_train_step_kwargs (
Optional, varsayılanNone) — Özel eğitim adım kwargs'ları. - custom_model_provider_function (
Optional, varsayılanNone) — Özel model sağlayıcı işlevi. - custom_prepare_model_function (
Optional, varsayılanNone) — Özel model hazırlama işlevi. - custom_megatron_datasets_provider_function (
Optional, varsayılanNone) — Özel megatron train_valid_test veri setleri sağlayıcı işlevi. - custom_get_batch_function (
Optional, varsayılanNone) — Özel get batch işlevi. - custom_loss_function (
Optional, varsayılanNone) — Özel kayıp fonksiyonu. - other_megatron_args (
Optional, varsayılanNone) — 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
< source >( backend: DynamoBackend = Nonemode: str = Nonefullgraph: bool = Nonedynamic: bool = Noneoptions: Any = Nonedisable: bool = Falseuse_regional_compilation: bool = None )
Parametreler
- backend (
DynamoBackend, varsayılanNone) — 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ılanNone) — Olası seçenekler ‘default’, ‘reduce-overhead’ veya ‘max-autotune’dür. - fullgraph (
bool, varsayılanNone) — Modelin birkaç alt grafik (subgraph) olarak bölünmesine izin verilip verilmeyeceği. - dynamic (
bool, varsayılanNone) — İzleme için dinamik şekil kullanılıp kullanılmayacağı. - options (
Any, varsayılanNone) — Arka uca iletilecek seçeneklerin sözlüğü. - disable (
bool, varsayılanFalse) — Test için torch.compile() işlevini devre dışı bırakır - use_regional_compilation (
bool, varsayılanNone) — 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,GPT2LMHeadModeliçinde tekrarlanan blok/sınıfGPT2Block'tür vemodel.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
< source >( 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ılanFalse) — 8bit kuantizasyonu etkinleştirir. - llm_int8_threshold (
float, varsayılan6.0) — Outliner eşiğinin değeri. Yalnızcaload_in_8bit=Trueolduğunda geçerlidir. - load_in_4bit (
bool, varsayılanFalse) — 4bit kuantizasyonunu etkinleştirir. - bnb_4bit_quant_type (
str, varsayılanfp4) —bnb.nn.Linear4Bitkatmanlarında kuantizasyon veri türünü ayarlar. Seçenekler {‘fp4’,‘np4’}. - bnb_4bit_use_double_quant (
bool, varsayılanFalse) — İlk kuantizasyondan gelen kuantizasyon sabitlerinin yeniden kuantize edildiği iç içe kuantizasyonu etkinleştirir. - bnb_4bit_compute_dtype (
bool, varsayılanfp16) — 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ılanNone) — Bu, kalan kuantize edilmemiş katmanların dtype değerini ayarlar.bitsandbyteskütüphanesi, 8 bitlik modeller için değeritorch.float16olarak ayarlamayı ve 4 bitlik modeller için hesaplama dtype'ı ile aynı dtype'ı kullanmayı önerir. - skip_modules (
List[str], varsayılanNone) — Kantizasyonunu yapmayacağımız modüllerin açık listesi. Bu modüllerin veri türütorch_dtypeolacaktır. - keep_in_fp32_modules (
List, varsayılanNone) — Kantizasyon uygulamadığımız modüllerin açık listesi. Bunlarıtorch.float32olarak tutuyoruz.
BitsAndBytes 4bit ve 8bit kuantizasyonunu etkinleştirmek için bir eklenti
sınıf accelerate.DataLoaderConfiguration
< source >( 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ılanFalse) — Hızlandırıcının, veri yükleyicilerin (dataloaders) ürettiği partileri (batches) cihazlar arasında bölüp bölmeyeceğini belirtir.Trueise, kullanılan gerçek parti boyutu her türlü dağıtık süreçte aynı olacaktır, ancak bu, kullandığınıznum_processessayısının tam bir katı olmalıdır.Falseise, kullanılan gerçek parti boyutu, betiğinizde ayarlanan değerin süreç sayısıyla çarpımı olacaktır. - dispatch_batches (
bool, varsayılanNone) —Trueolarak 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 birIterableDatasetolanDataLoaderiçin varsayılan olarakTrue, diğer durumlardaFalseolur. - even_batches (
bool, varsayılanTrue) —Trueolarak 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ılanFalse) — 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ılanNone) —use_seedable_samplerkullanılırken altta yatan üreteç için kullanılacak tohum.Noneise üreteç, torch'taki mevcut varsayılan tohumu kullanır. - non_blocking (
bool, varsayılanFalse) —Trueolarak 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'dapin_memory'ninTrueolarak ayarlanması önerilir. - use_stateful_dataloader (
bool, varsayılanFalse) —Trueolarak 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 birtorchdatasü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
< source >( 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ılanNone) — Verilerin saklanması için bir dizine giden yol. - logging_dir (
str, varsayılanNone) — Yerel olarak uyumlu kayıt tutucuların günlüklerini depolamak için bir dizin yolu. None ise, varsayılan olarakproject_dirkullanılır. - automatic_checkpoint_naming (
bool, varsayılanFalse) — Kaydedilen durumların otomatik olarak ardışık adlandırılıp adlandırılmayacağı. - total_limit (
int, varsayılanNone) — Tutulacak toplam kaydedilmiş durumların maksimum sayısı. - iteration (
int, varsayılan0) — Mevcut kaydetme yinelemesi. - save_on_each_node (
bool, varsayılanFalse) — Ç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.
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
< source >( tensorfrom_process: int = 0 )
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
< source >( object_listfrom_process: int = 0 )
Bir süreçten diğer süreçlere picklenebilir nesneler listesini yayınlayın.
accelerate.utils.concatenate
< source >( datadim = 0 )
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_to_fp32
< source >( tensor )
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
< source >( tensor )
Tüm cihazlardan, iç içe geçmiş bir liste/tuple/dictionary içindeki tensörleri özyinelemeli olarak topla.
accelerate.utils.gather_object
< source >( object: Any )
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
< source >( distributed_type: DistributedType = None**kwargs )
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
< source >( native_amp: bool = Falseautocast_kwargs: AutocastKwargs = None )
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
< source >( data )
İç 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
< source >( 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ılanFalse) — 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
< source >( 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_typetarafından kabul edilen nesnelerin iç içe geçmiş listesi/tuplüsü/sözlüğü) —funcuygulaması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ılanis_torch_tensor) — Verilen bir yaprak nesnesinefunc'in uygulanıp uygulanmayacağını belirleyen öngörü. - error_on_other_type (
bool, isteğe bağlı, varsayılanFalse) —dataaçıldıktan sonra,test_typeFalsedöndüren bir nesne elde edilirse hata döndürülüp döndürülmeyeceğini belirtir.Falseise, 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
< source >( 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
< source >( 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ılanFalse) —Trueise, 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 (
strveyaList[str], isteğe bağlı) — Verilendevice'e gönderilmemesi gereken değerlere sahip birtensorsö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
< source >( datatensor_sliceprocess_index = Nonenum_processes = None )
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.
bf16'nin desteklenip desteklenmediğini kontrol eder, isteğe bağlı olarak TPU'yu yok sayar
MPS cihazının kullanılabilir olup olmadığını kontrol eder. Gerekli minimum sürüm 1.12'dir.
torch_npu'nun yüklü olup olmadığını ve ortamda bir NPU bulunup bulunmadığını kontrol eder
accelerate.utils.is_torch_version
< source >( operation: strversion: str )
Mevcut PyTorch sürümünü, bir işlemle verilen bir referansla karşılaştırır.
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.
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
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.
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.
accelerate.commands.config.default.write_basic_config
< source >( 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ılandefault_json_config_file) — İsteğe bağlı özel kayıt konumu.accelerate launchkullanırken--config_fileparametresine iletilmelidir. Varsayılan konum, huggingface önbellek klasörünün içindedir (~/.cache/huggingface) ancakHF_HOMEortam değişkeni ayarlanarak ve ardındanaccelerate/default_config.yamlyolu 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.
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
< source >( local_process_index: intverbose: bool | None = None )
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.
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
< source >( 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 boyutunuintolarak 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.
Modelleme
Bu yardımcılar, PyTorch modelleriyle etkileşime girme işleviyle ilgilidir
Modelin ve en büyük katmanının toplam boyutunu hesaplar
accelerate.utils.compute_module_sizes
< source >( 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
< source >( 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ılanFalse) —modeliçindekimodule.moduledurumları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
< source >( 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 (
strveyatorch.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_weightsbağlam yöneticisi içinde başlatılmış gibi).
accelerate.utils.get_max_layer_size
< source >( 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_sizestarafı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_classeslistesinde yer alan bir modül
accelerate.infer_auto_device_map
< source >( 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 (
strveyatorch.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ılanFalse) — Fonksiyon device_map oluştururken hata ayıklama ifadelerinin sağlanıp sağlanmayacağı. - clean_result (
bool, isteğe bağlı, varsayılanTrue) — 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ılanFalse) — 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ılanFalse) — 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_weightsbağlam yöneticisi içinde başlatılmış gibi).
accelerate.load_checkpoint_in_model
< source >( 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 (
strveyaos.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
.jsondosyasına giden bir yol - benzersiz bir
.index.jsondosyası 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 (
strveyaos.PathLike, isteğe bağlı) —device_mapiçinde"disk"değeri varsa, ağırlıkların taşınacağı klasör. - dtype (
strveyatorch.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ılanFalse) —Trueise, 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ılanFalse) — 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.float32veri 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ılanFalse) — 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ılanTrue) — bu değerTrueolarak 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ılanFalse) — seçenekTrueolduğunda, dağıtık birProcessGroupbaş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
< source >( modelindexoffload_folder )
Ağırlıkları offload klasöründen modele yükler.
accelerate.utils.load_state_dict
< source >( 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
< source >( save_dir: str | os.PathLikestate_dict: dict )
Belirtilen klasörde bir durum sözlüğünü (state dict) dışa aktarın.
accelerate.utils.retie_parameters
< source >( modeltied_params )
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
< source >( 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,strveyatorch.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 budtype'e dönüştürülür. Aksi takdirde,valuemodeldeki 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ılanFalse) —Trueise, mümkünse cihaz aktarımı ana makineye göre asenkron olarak gerçekleşir. - clear_cache (
bool, isteğe bağlı, varsayılanTrue) — 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
< source >( model: Modulereturn_fqns: bool = False ) → list[torch.nn.Module]
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
< source >( 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ılanFalse) —modeliçindekimodule.moduledurumları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
< source >( 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ılanFalse) — Yalnızca küresel ana süreçte kaydetme - safe_serialization (
bool, isteğe bağlı, varsayılanFalse) —objnesnesininsafetensorsile mi yoksa geleneksel PyTorch yöntemiyle (bu yöntempicklekullanır) mı kaydedileceğini belirtir.
Verileri diske kaydedin. torch.save() yerine kullanın.
accelerate.utils.load
< source >( fmap_location = None**kwargs )
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)
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
< source >( seed: intdevice_specific: bool = Falsedeterministic: bool = False )
Parametreler
- seed (
int) — Ayarlanacak tohum. - device_specific (
bool, isteğe bağlı, varsayılanFalse) — Tohumun her cihazdaself.process_indexile hafifçe farklılaştırılıp farklılaştırılmayacağı. - deterministic (
bool, isteğe bağlı, varsayılanFalse) — 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
< source >( rng_type: accelerate.utils.dataclasses.RNGType | None = Nonegenerator: torch.Generator | None = None )
accelerate.synchronize_rng_states
< source >( 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
< source >( upgrade: bool = False )
Google Colaboratory'de torch sürümüne göre uygun xla tekerleklerini (wheels) yüklemek için yardımcı işlev.
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
< source >( 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 (
strveyaos.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
.jsondosyasına giden bir yol - benzersiz bir
.index.jsondosyası 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 (
strveyaos.PathLike, isteğe bağlı) —device_mapiçinde"disk"değeri varsa, ağırlıkların taşınacağı klasör. - dtype (
strveyatorch.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ılanFalse) —Trueise, 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ılanFalse) — 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.float32veri 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ılanFalse) — 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ılanTrue) — bu değerTrueolarak 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ılanFalse) — seçenekTrueolduğunda, dağıtık birProcessGroupbaş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
< source >( 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 (
strveyaos.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
.jsondosyasına giden bir yol - benzersiz bir
.index.jsondosyası 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 (
strveyaos.PathLike, isteğe bağlı) —device_mapiçinde"disk"değeri varsa, ağırlıkların taşınacağı klasör. - offload_state_dict (
bool, isteğe bağlı, varsayılanFalse) —Trueise, 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,