Accelerate documentation

دوال وفئات مساعدة

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

and get access to the augmented documentation experience

to get started

دوال وفئات مساعدة

فيما يلي مجموعة متنوعة من دوال الأداة التي يوفرها 🤗 Accelerate، مصنّفة حسب حالة الاستخدام.

ثوابت

ثوابت مستخدمة على نطاق واسع في 🤗 Accelerate للاسترشاد

ما يلي ثوابت تُستخدم عند استخدام Accelerator.save_state()

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

ما يلي ثوابت تُستخدم عند استخدام Accelerator.save_model()

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

فئات البيانات

هذه فئات بيانات أساسية تُستخدم في جميع أنحاء 🤗 Accelerate ويمكن تمريرها كمعاملات.

مستقل

هذه فئات بيانات مستقلة تُستخدم للتحقق، مثل نوع نظام التوزيع المستخدم

فئة accelerate.utils.ComputeEnvironment

< >

( *values )

يمثل نوع بيئة الحساب.

القيم:

  • LOCAL_MACHINE — أجهزة العناقيد الخاصة/المخصصة.
  • AMAZON_SAGEMAKER — Amazon SageMaker كبيئة للحوسبة.

فئة accelerate.DistributedType

< >

( *values )

يمثل نوعًا من البيئات الموزعة.

القيم:

  • لا — ليست بيئة موزعة، بل عملية واحدة فقط.
  • MULTI_CPU — موزّع على عدة عقد CPU.
  • MULTI_GPU — موزّع على وحدات معالجة رسومية متعددة.
  • MULTI_MLU — موزّع على عدة وحدات معالجة منطقية (MLU).
  • MULTI_SDAA — موزّع على عدة SDAAs.
  • MULTI_MUSA — موزّع على عدة وحدات MUSA.
  • MULTI_NPU — موزّع على عدة وحدات NPU.
  • MULTI_XPU — موزّع على عدة وحدات معالجة XPU.
  • MULTI_HPU — موزّع على عدة وحدات HPU.
  • MULTI_NEURON — موزّع على عدة نوى Neuron.
  • DEEPSPEED — استخدام DeepSpeed.
  • FSDP — استخدام موازاة البيانات المجزأة بالكامل (FSDP).
  • XLA — استخدام TorchXLA.
  • MEGATRON_LM — استخدام Megatron-LM.

فئة accelerate.utils.DynamoBackend

< >

( *values )

يمثل خلفية دينامو (انظر https://pytorch.org/docs/stable/torch.compiler.html).

القيم:

  • لا — لا تستخدم torch dynamo.
  • EAGER — يستخدم PyTorch لتشغيل GraphModule المستخرج. وهذا مفيد للغاية في تصحيح أخطاء TorchDynamo.
  • AOT_EAGER — يستخدم AotAutograd دون مُجمِّع، أي باستخدام PyTorch eager فقط للرسوم الأمامية والخلفية المستخرجة من AotAutograd. يكون هذا مفيدًا لتصحيح الأخطاء، ومن غير المرجح أن يمنح تسريعًا.
  • INDUCTOR — يستخدم واجهة TorchInductor الخلفية مع AotAutograd وcudagraphs بالاستفادة من نوى Triton المولّدة بالرمز. اقرأ المزيد
  • AOT_TS_NVFUSER — nvFuser مع AotAutograd/TorchScript. اقرأ المزيد
  • NVPRIMS_NVFUSER — nvFuser مع PrimTorch. اقرأ المزيد
  • CUDAGRAPHS — cudagraphs مع AotAutograd. اقرأ المزيد
  • OFI — يستخدم Torchscript optimize_for_inference. للاستدلال فقط. اقرأ المزيد
  • FX2TRT — يستخدم Nvidia TensorRT لتحسينات الاستدلال. للاستدلال فقط. اقرأ المزيد
  • ONNXRT — يستخدم ONNXRT للاستدلال على المعالج المركزي/وحدة معالجة الرسوميات. للاستدلال فقط. اقرأ المزيد
  • TENSORRT — يستخدم ONNXRT لتشغيل TensorRT لأغراض تحسين الاستدلال. اقرأ المزيد
  • AOT_TORCHXLA_TRACE_ONCE — يستخدم Pytorch/XLA مع تحسين TorchDynamo، للتدريب. اقرأ المزيد
  • TORCHXLA_TRACE_ONCE — يستخدم Pytorch/XLA مع تحسين TorchDynamo، للاستدلال. اقرأ المزيد
  • TVM — يستخدم Apache TVM لتحسينات الاستدلال. اقرأ المزيد
  • HPU_BACKEND — يستخدم واجهة HPU الخلفية لتحسينات الاستدلال.
  • NEURON — يستخدم واجهة AWS Neuron الخلفية لأجهزة Trainium/Inferentia.

فئة accelerate.utils.LoggerType

< >

( *values )

يمثل نوعًا من متتبعات التجارب المدعومة

القيم:

  • الكل — جميع العتّادات المتاحة في البيئة والمدعومة
  • TENSORBOARD — TensorBoard كأداة لتتبع التجارب
  • WANDB — wandb كمتتبع للتجارب
  • TRACKIO — أداة trackio لتتبع التجارب
  • COMETML — comet_ml كمتتبع للتجارب
  • MLFLOW — أداة mlflow لتتبع التجارب
  • CLEARML — clearml كمتتبع للتجارب
  • DVCLIVE — dvclive كمتتبع للتجارب
  • SWANLAB — swanlab كأداة لتتبع التجارب

فئة accelerate.utils.PrecisionType

< >

( *values )

يمثل نوعًا من الدقة المستخدمة على القيم العائمة

القيم:

  • لا — باستخدام الدقة الكاملة (FP32)
  • FP16 — باستخدام الدقة النصفية
  • BF16 — باستخدام دقة الفاصلة العائمة للدماغ

فئة accelerate.utils.RNGType

< >

( *values )

فئة accelerate.utils.SageMakerDistributedType

< >

( *values )

يمثل نوعًا من البيئات الموزعة.

القيم:

  • لا — ليست بيئة موزعة، بل عملية واحدة فقط.
  • DATA_PARALLEL — باستخدام موازاة البيانات الموزعة من sagemaker.
  • MODEL_PARALLEL — باستخدام توازٍ موزّع للنماذج من sagemaker.

Kwargs

هذه هي الحجج القابلة للتخصيص للتفاعلات المحددة في مختلف أنحاء منظومة PyTorch التي تتولى Accelerate إدارتها في الخلفية.

فئة accelerate.AutocastKwargs

< >

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

استخدم هذا الكائن في Accelerator لديك لتخصيص كيفية عمل torch.autocast. يُرجى الرجوع إلى توثيق هذا context manager لمزيد من المعلومات حول كل حجة.

مثال:

from accelerate import Accelerator
from accelerate.utils import AutocastKwargs

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

فئة accelerate.DistributedDataParallelKwargs

< >

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

استخدم هذا الكائن في Accelerator لديك لتخصيص كيفية تغليف نموذجك في torch.nn.parallel.DistributedDataParallel. يُرجى الرجوع إلى توثيق هذا الغلاف لمزيد من المعلومات حول كل حجة.

مثال:

from accelerate import Accelerator
from accelerate.utils import DistributedDataParallelKwargs

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

فئة accelerate.GradScalerKwargs

< >

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

استخدم هذا الكائن في Accelerator الخاص بك لتخصيص سلوك الدقة المختلطة، وتحديداً كيفية إنشاء torch.amp.GradScaler أو torch.cuda.amp.GradScaler المستخدم. يُرجى الرجوع إلى توثيق هذا scaler لمزيد من المعلومات حول كل حجة.

مثال:

from accelerate import Accelerator
from accelerate.utils import GradScalerKwargs

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

فئة accelerate.InitProcessGroupKwargs

< >

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

استخدم هذا الكائن في Accelerator لديك لتخصيص تهيئة العمليات الموزعة. يرجى الرجوع إلى توثيق هذه method لمزيد من المعلومات حول كل حجة.

ملاحظة: إذا تم تعيين timeout إلى None، فسيكون الافتراضي معتمدًا على كيفية تعيين backend.

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

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

فئة accelerate.utils.KwargsHandler

< >

( )

مزيج داخلي (Internal mixin) يطبّق طريقة to_kwargs() لفئة البيانات (dataclass).

to_kwargs

< >

( )

يعيد قاموسًا يحتوي على السمات التي تختلف قيمها عن الافتراضي لهذه الفئة.

الإضافات

هذه إضافات يمكن تمريرها إلى كائن Accelerator. وعلى الرغم من تعريفها في أماكن أخرى من التوثيق، فإن جميعها متاحة للاطلاع عليها هنا من باب التسهيل:

فئة accelerate.DeepSpeedPlugin

< >

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

المعاملات

  • hf_ds_config (Any، الافتراضي None) — مسار ملف إعدادات DeepSpeed أو قاموس أو كائن من الفئة accelerate.utils.deepspeed.HfDeepSpeedConfig.
  • gradient_accumulation_steps (int، القيمة الافتراضية None) — عدد الخطوات لتراكم التدرجات قبل تحديث حالات المُحسِّن. إذا لم يتم ضبطها، فسيتم استخدام القيمة مباشرةً من Accelerator.
  • gradient_clipping (float، القيمة الافتراضية None) — تفعيل قص التدرجات مع القيمة المحددة.
  • zero_stage (int، القيمة الافتراضية None) — الخيارات الممكنة هي 0، 1، 2، 3. سيتم أخذ القيمة الافتراضية من متغير البيئة.
  • is_train_batch_min (bool، القيمة الافتراضية True) — إذا تم تحديد كل من مُحمّلي بيانات التدريب والتقييم، فسيحدد هذا train_batch_size.
  • offload_optimizer_device (str، القيمة الافتراضية None) — الخيارات الممكنة هي none|cpu|nvme. لا ينطبق إلا مع مراحل ZeRO 2 و 3.
  • offload_param_device (str، القيمة الافتراضية None) — الخيارات الممكنة هي none|cpu|nvme. لا ينطبق إلا مع ZeRO Stage 3.
  • offload_optimizer_nvme_path (str، القيمة الافتراضية None) — الخيارات الممكنة هي /nvme|/local_nvme. لا ينطبق إلا مع ZeRO Stage 3.
  • offload_param_nvme_path (str، القيمة الافتراضية None) — الخيارات الممكنة هي /nvme|/local_nvme. لا ينطبق إلا مع ZeRO Stage 3.
  • zero3_init_flag (bool، القيمة الافتراضية None) — علامة تُظهر ما إذا كان سيتم حفظ النموذج بدقة 16 بت. تنطبق هذه العلامة فقط مع ZeRO Stage-3.
  • zero3_save_16bit_model (bool، القيمة الافتراضية None) — علامة تُظهر ما إذا كان يجب حفظ النموذج بدقة 16 بت. تنطبق هذه العلامة فقط مع ZeRO Stage-3.
  • transformer_moe_cls_names (str، القيمة الافتراضية None) — قائمة مفصولة بفواصل لأسماء فئات طبقات MoE في Transformers (حساسة لحالة الأحرف). على سبيل المثال، MixtralSparseMoeBlock، Qwen2MoeSparseMoeBlock، JetMoEAttention، JetMoEBlock، وما إلى ذلك.

يُستخدم هذا الإضافة (plugin) لدمج DeepSpeed.

deepspeed_config_process

< >

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

معالجة إعدادات DeepSpeed باستخدام القيم من kwargs.

select

< >

( _from_accelerator_state: bool = False )

يُعيّن HfDeepSpeedWeakref لاستخدام إعدادات إضافة deepspeed الحالية

فئة accelerate.FullyShardedDataParallelPlugin

< >

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

المعاملات

  • fsdp_version (int، القيمة الافتراضية 1) — إصدار FSDP الذي سيتم استخدامه. القيمة الافتراضية هي 1. إذا تم ضبطه على 2، يتوقع المُشغِّل أن يكون الإعداد محوّلًا إلى صيغة FSDP2.
  • sharding_strategy (Union[str, torch.distributed.fsdp.ShardingStrategy]، القيمة الافتراضية 'FULL_SHARD') — استراتيجية التجزئة (Sharding) المستخدمة. يجب أن تكون إما str أو مثيلًا من torch.distributed.fsdp.fully_sharded_data_parallel.ShardingStrategy. تم إيقاف استخدامها لصالح reshard_after_forward.
  • reshard_after_forward (Union[str, torch.distributed.fsdp.ShardingStrategy, bool]، القيمة الافتراضية هي 'FULL_SHARD' عند fsdp_version=1 وTrue عند fsdp_version=2) — استراتيجية التجزئة (Sharding) المستخدمة. يجب أن تكون قيمة منطقية (bool) إذا كانت fsdp_version مضبوطة على 2، وإلا فستكون str أو مثيلًا من torch.distributed.fsdp.fully_sharded_data_parallel.ShardingStrategy.
  • backward_prefetch (Union[str, torch.distributed.fsdp.BackwardPrefetch]، القيمة الافتراضية 'NO_PREFETCH') — استراتيجية الاستباق العكسي (Backward prefetch) المستخدمة. يجب أن تكون إما str أو مثيلًا من torch.distributed.fsdp.fully_sharded_data_parallel.BackwardPrefetch.
  • mixed_precision_policy (Optional[Union[dict, str, torch.distributed.fsdp.MixedPrecision, torch.distributed.fsdp.MixedPrecisionPolicy]]، القيمة الافتراضية None) — إعدادات لتفعيل التدريب بدقة مختلطة باستخدام FullyShardedDataParallel. إذا تم تمرير dict، فيجب أن يحتوي على المفاتيح التالية: param_dtype، reduce_dtype، وbuffer_dtype، ويمكن أن يكون كائنًا من torch.distributed.fsdp.MixedPrecisionPolicy إذا تم ضبط fsdp_version على 2. إذا تم تمرير str، فيجب أن يكون أحد القيم التالية: fp8، fp16، bf16، fp32، ويُستخدم لضبط param_dtype، reduce_dtype، وbuffer_dtype.
  • auto_wrap_policy (Optional(Union[Callable, Literal["transformer_based_wrap", "size_based_wrap", "no_wrap"]]), defaults to NO_WRAP) -- A callable or string specifying a policy to recursively wrap layers with FSDP. If a string, it must be one of transformer_based_wrap, size_based_wrap, or no_wrap. See torch.distributed.fsdp.wrap.size_based_wrap_policy` for a direction on what it should look like.
  • cpu_offload (Union[bool, torch.distributed.fsdp.CPUOffload, torch.distributed.fsdp.CPUOffloadPolicy]، القيمة الافتراضية False) — ما إذا كان سيتم نقل المعاملات إلى وحدة المعالجة المركزية (CPU). يجب أن تكون إما قيمة bool أو مثيلًا من torch.distributed.fsdp.fully_sharded_data_parallel.CPUOffload أو torch.distributed.fsdp.fully_sharded_data_parallel.CPUOffloadPolicy إذا تم تعيين fsdp_version إلى 2.
  • ignored_modules (Optional[Union[Iterable[torch.nn.Module], str]]، القيمة الافتراضية None) — قائمة بالوحدات التي يجب تجاهلها عند التغليف باستخدام FSDP. عند تمرير نص، سيتم مطابقة الوحدات بالاسم باستخدام regex fullmatch. إذا كانت fsdp_version مضبوطة على 2، يتم تحويل الوحدات إلى معاملات واستخدامها.
  • state_dict_type (Union[str, torch.distributed.fsdp.StateDictType]، القيمة الافتراضية 'FULL_STATE_DICT') — نوع state dict المستخدم. إذا كان نصًا، فيجب أن يكون أحد full_state_dict أو local_state_dict أو sharded_state_dict.
  • state_dict_config (Optional[Union[torch.distributed.fsdp.FullStateDictConfig, torch.distributed.fsdp.ShardedStateDictConfig]، القيمة الافتراضية None) — إعدادات state dict المستخدمة. يتم تحديدها بناءً على state_dict_type إذا لم يتم تمريرها.
  • optim_state_dict_config (Optional[Union[torch.distributed.fsdp.FullOptimStateDictConfig, torch.distributed.fsdp.ShardedOptimStateDictConfig]، القيمة الافتراضية None) — إعدادات optim state dict المستخدمة. يتم تحديدها بناءً على state_dict_type إذا لم يتم تمريرها.
  • limit_all_gathers (bool، القيمة الافتراضية True) — ما إذا كان FSDP سيُزامن خيط المعالج المركزي (CPU) بشكل صريح لمنع وجود عدد كبير من عمليات all-gather قيد التنفيذ. يؤثر هذا bool فقط على استراتيجيات التجزئة التي تُجدول عمليات all-gather. قد يساعد تفعيل هذا الخيار في تقليل عدد محاولات إعادة تخصيص الذاكرة (malloc) في CUDA.
  • use_orig_params (bool، القيمة الافتراضية False) — ما إذا كان سيتم استخدام المعاملات الأصلية لمُحسِّن التدريب.
  • param_init_fn (Optional[Callable[[torch.nn.Module], None]، القيمة الافتراضية None) — دالة Callable[torch.nn.Module] -> None تحدد كيفية تهيئة الوحدات الموجودة حاليًا على جهاز meta على جهاز فعلي. تنطبق فقط عندما تكون sync_module_states قيمتها True. افتراضيًا، تكون دالة lambda تستدعي to_empty على الوحدة.
  • sync_module_states (bool، القيمة الافتراضية False) — ما إذا كان يجب على كل وحدة FSDP مُغلَفة بشكل فردي بث معاملات الوحدة من الرتبة 0 للتأكد من أنها متطابقة عبر جميع الرتب بعد التهيئة. تكون القيمة الافتراضية False ما لم تكن cpu_ram_efficient_loading هي True، وفي هذه الحالة سيتم تفعيلها إجبارياً.
  • forward_prefetch (bool، القيمة الافتراضية False) — ما إذا كان يجب على FSDP أن يجلب مسبقًا بشكل صريح عملية all-gather التالية أثناء التنفيذ في مسار الأمامي. استخدمه فقط مع الرسوم البيانية الثابتة.
  • activation_checkpointing (bool) — القيمة الافتراضية False — تقنية لتقليل استهلاك الذاكرة من خلال مسح التفعيلات (activations) لطبقات معينة وإعادة حسابها أثناء عملية الرجوع (backward pass). وبشكل فعّال، فإن هذا يحوّل وقت الحساب الإضافي إلى تقليل في استهلاك الذاكرة.
  • cpu_ram_efficient_loading (bool، القيمة الافتراضية None) — إذا كانت القيمة True، فإن العملية الأولى فقط هي التي تُحمّل نقطة التفتيش للنموذج المُدرَّب مسبقًا، بينما تكون الأوزان فارغة في جميع العمليات الأخرى. ينطبق هذا على Transformers فقط. عند استخدام هذا الخيار، يجب أن تكون قيمة sync_module_states هي True.
  • transformer_cls_names_to_wrap (Optional[List[str]]، القيمة الافتراضية None) — قائمة بأسماء فئات طبقات التحويل (transformer) التي يجب تغليفها. لا تنطبق إلا عندما تكون auto_wrap_policy هي transformer_based_wrap.
  • min_num_params (Optional[int]، القيمة الافتراضية None) — الحد الأدنى لعدد المعاملات التي يجب أن يحتويها الوحدة (module) حتى يتم تغليفها. ينطبق فقط عندما تكون auto_wrap_policy هي size_based_wrap.

يُستخدم هذا الإضافة (plugin) لتفعيل توازٍ البيانات المُجزّأة بالكامل (fully sharded data parallelism).

set_auto_wrap_policy

< >

( model )

بناءً على model، ينشئ auto_wrap_policy استناداً إلى السياسة المُمرَّرة، مع تحديد ما إذا كان بإمكاننا استخدام transformer_cls_to_wrap

set_mixed_precision

< >

( mixed_precisionbuffer_autocast = Falseoverride = False )

يحدد سياسة الدقة المختلطة لـ FSDP

set_state_dict_type

< >

( state_dict_type = None )

اضبط إعدادات StateDictType بناءً على StateDictType.

validate_mixed_precision_policy

< >

( )

يتحقق من سياسة الدقة المختلطة، مع تجريد التفاصيل لتجنب استيراد المكتبات إذا لم تكن مطلوبة.

فئة accelerate.utils.GradientAccumulationPlugin

< >

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

المعاملات

  • num_steps (int) — عدد الخطوات التي يتم فيها تراكم التدرجات.
  • adjust_scheduler (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب تعديل خطوات المجدول (scheduler) لمراعاة عدد الخطوات المتراكمة. يجب أن تكون القيمة True إذا لم يتم تعديل المجدول المستخدم ليتوافق مع تراكم التدرجات.
  • sync_with_dataloader (bool، اختياري، القيمة الافتراضية True) — ما إذا كان سيتم مزامنة تعيين التدرجات عند الوصول إلى نهاية مُحمِّل البيانات.
  • sync_each_batch (bool, اختياري) — ما إذا كان سيتم مزامنة تعيين التدرجات في كل دفعة بيانات. قد يؤدي تعيينه إلى True إلى تقليل متطلبات الذاكرة عند استخدام تراكم التدرجات مع التدريب الموزع، على حساب السرعة.

إضافة (Plugin) لضبط سلوك تراكم التدرجات. يمكنك تمرير واحد فقط من gradient_accumulation_plugin أو gradient_accumulation_steps إلى Accelerator. تمرير كلاهما معاً يؤدي إلى ظهور خطأ.

مثال:

from accelerate.utils import GradientAccumulationPlugin

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

فئة accelerate.utils.MegatronLMPlugin

< >

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

المعاملات

  • tp_degree (int)، القيمة الافتراضية None — درجة توازي المصفوفات.
  • pp_degree (int)، القيمة الافتراضية None) — درجة التوازي في خط الأنابيب.
  • num_micro_batches (int، القيمة الافتراضية None) — عدد الدُفعات الدقيقة.
  • gradient_clipping (float) — القيمة الافتراضية None قيمة قص التدرج بناءً على المعيار L2 العالمي (0 لتعطيله).
  • sequence_parallelism (bool)، القيمة الافتراضية None) — تفعيل توازى التسلسل.
  • recompute_activations (bool، القيمة الافتراضية None) — تفعيل إعادة الحساب الانتقائية للتفعيلات.
  • use_distributed_optimizer (bool، القيمة الافتراضية None) — تفعيل المُحسِّن الموزَّع.
  • pipeline_model_parallel_split_rank (int، القيمة الافتراضية None) — الرتبة التي يجب فيها فصل المُشَفِّر والمُفَكِّك.
  • num_layers_per_virtual_pipeline_stage (int، القيمة الافتراضية None) — عدد الطبقات لكل مرحلة خط أنابيب افتراضي.
  • is_train_batch_min (str، القيمة الافتراضية True) — إذا تم تحديد كلا من مُحمّلي بيانات التدريب والتقييم، فسيحدد هذا micro_batch_size.
  • train_iters (int، القيمة الافتراضية None) — إجمالي عدد العينات للتدريب عبر جميع عمليات التدريب. لاحظ أنه يجب تقديم train-iters أو train-samples عند استخدام MegatronLMDummyScheduler.
  • train_samples (int، القيمة الافتراضية None) — إجمالي عدد العينات للتدريب عبر جميع عمليات التدريب. لاحظ أنه يجب تقديم train-iters أو train-samples عند استخدام MegatronLMDummyScheduler.
  • weight_decay_incr_style (str) — القيمة الافتراضية 'constant' — دالة زيادة التلاشي الوزني. الخيارات=[“constant”, “linear”, “cosine”].
  • start_weight_decay (float، القيمة الافتراضية None) — معامل اضمحلال الوزن الأولي لتنظيم L2.
  • end_weight_decay (float، القيمة الافتراضية None) — معامل انحسار الوزن في نهاية التشغيل لتنظيم L2.
  • lr_decay_style (str، القيمة الافتراضية 'linear') — دالة تخفيض معدل التعلم. الخيارات=[‘constant’، ‘linear’، ‘cosine’].
  • lr_decay_iters (int، القيمة الافتراضية None) — عدد التكرارات لتلاشي معدل التعلم. إذا كانت القيمة None، فإن القيمة الافتراضية هي train_iters.
  • lr_decay_samples (int، القيمة الافتراضية None) — عدد العينات لتلاشي معدل التعلم. إذا كانت القيمة train_samples، فإن القيمة الافتراضية هي train_samples.
  • lr_warmup_iters (int، القيمة الافتراضية None) — عدد التكرارات التي يتم خلالها رفع معدل التعلم بشكل خطي.
  • lr_warmup_samples (int، القيمة الافتراضية None) — عدد العينات التي يتم خلالها رفع معدل التعلم بشكل خطي.
  • lr_warmup_fraction (float، القيمة الافتراضية None) — النسبة من lr-warmup-(iters/samples) التي يتم خلالها رفع معدل التعلم بشكل خطي.
  • min_lr (float، القيمة الافتراضية 0) — القيمة الدنيا لمعدل التعلم. يقوم المجدول بقصّ القيم التي تقع دون هذا العتبة.
  • consumed_samples (List، القيمة الافتراضية None) — عدد العينات المستهلكة بنفس ترتيب مُحمِّلات البيانات المُمرَّرة إلى استدعاء accelerator.prepare.
  • no_wd_decay_cond (Optional، القيمة الافتراضية None) — الشرط الخاص بتعطيل تضاؤل الوزن.
  • scale_lr_cond (Optional، القيمة الافتراضية None) — الشرط لتغيير معدل التعلم.
  • lr_mult (float، القيمة الافتراضية 1.0) — معامل مضاعفة معدل التعلم.
  • megatron_dataset_flag (bool، القيمة الافتراضية False) — ما إذا كانت صيغة مجموعة البيانات تتبع صيغة Megatron-LM Indexed/Cached/MemoryMapped.
  • seq_length (int، القيمة الافتراضية None) — أقصى طول تسلسل للمعالجة.
  • encoder_seq_length (int، القيمة الافتراضية None) — أقصى طول تسلسل تتم معالجته للمُشفِّر.
  • decoder_seq_length (int، القيمة الافتراضية None) — أقصى طول تسلسل تتم معالجته للمفكك.
  • tensorboard_dir (str، القيمة الافتراضية None) — المسار لحفظ سجلات tensorboard.
  • set_all_logging_options (bool، القيمة الافتراضية False) — ما إذا كان سيتم تعيين جميع خيارات التسجيل.
  • eval_iters (int، القيمة الافتراضية 100) — عدد التكرارات التي تُنفَّذ للتقييم على مجموعة التحقق/الاختبار.
  • eval_interval (int، القيمة الافتراضية 1000) — الفاصل الزمني بين تشغيل التقييم على مجموعة التحقق.
  • return_logits (bool، القيمة الافتراضية False) — ما إذا كان يجب إرجاع القيم اللوجستية (logits) من النموذج.
  • custom_train_step_class (Optional، القيمة الافتراضية None) — فئة خطوة التدريب المخصصة.
  • custom_train_step_kwargs (Optional، القيمة الافتراضية None) — معلمات kwargs مخصصة لخطوة التدريب.
  • custom_model_provider_function (Optional، القيمة الافتراضية None) — دالة مخصصة لتوفير النموذج.
  • custom_prepare_model_function (Optional، القيمة الافتراضية None) — دالة مخصصة لتحضير النموذج.
  • custom_megatron_datasets_provider_function (Optional، القيمة الافتراضية None) — دالة مخصصة لتوفير مجموعات بيانات التدريب والتحقق والاختبار في Megatron.
  • custom_get_batch_function (Optional، القيمة الافتراضية None) — دالة مخصصة للحصول على الدفعة.
  • custom_loss_function (Optional، القيمة الافتراضية None) — دالة خسارة مخصصة.
  • other_megatron_args (Optional، القيمة الافتراضية None) — حُجج أخرى لـ Megatron-LM. يُرجى الرجوع إلى Megatron-LM.

إضافة مخصّصة لـ Megatron-LM لتمكين التوازي على مستوى المصفوفات (Tensor) وخط الأنابيب (Pipeline) والتسلسل (Sequence) والبيانات. كما تُمكّن من إعادة الحساب الانتقائية للتفعيلات (Selective Activation Recomputation) والأنوية المدمجة المُحسّنة (Optimized Fused Kernels).

فئة accelerate.utils.TorchDynamoPlugin

< >

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

المعاملات

  • backend (DynamoBackend، القيمة الافتراضية None) — خلفية Dynamo صالحة. راجع https://pytorch.org/docs/stable/torch.compiler.html لمزيد من التفاصيل.
  • mode (str، القيمة الافتراضية None) — الخيارات الممكنة هي ‘default’ أو ‘reduce-overhead’ أو ‘max-autotune’.
  • fullgraph (bool، القيمة الافتراضية None) — ما إذا كان من المقبول تقسيم النموذج إلى عدة رسوم فرعية.
  • dynamic (bool، القيمة الافتراضية None) — ما إذا كان سيتم استخدام الشكل الديناميكي للتتبع.
  • options (Any، الافتراضي None) — قاموس من الخيارات التي تُمرَّر إلى الخلفية.
  • disable (bool، القيمة الافتراضية False) — تحويل torch.compile() إلى عملية لا تفعل شيئًا (no-op) لأغراض الاختبار
  • use_regional_compilation (bool، القيمة الافتراضية None) — استخدمه لتقليل زمن تهيئة الترجمة الباردة لـ torch.compile() عن طريق استهداف الكتل المتكررة من نفس الفئة وتجميعها تسلسليًا للوصول إلى ذاكرة المؤلّف (Compiler’s cache). على سبيل المثال، في GPT2LMHeadModel، الكتلة/الفئة المتكررة هي GPT2Block، ويمكن الوصول إليها عبر model.transformer.h[0]. أما بقية النموذج (مثل model.lm_head) فيتم تجميعها بشكل منفصل.

يُستخدم هذا الإضافة (plugin) لتجميع نموذج باستخدام PyTorch 2.0

التكوينات

هذه فئات يمكن تكوينها وتحويلها إلى التكامل المناسب

فئة accelerate.utils.BnbQuantizationConfig

< >

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

المعاملات

  • load_in_8bit (bool، القيمة الافتراضية False) — تفعيل التكميم بدقة 8 بت.
  • llm_int8_threshold (float، القيمة الافتراضية 6.0) — قيمة عتبة المُخْرِج. لا تُعَدّ ذات صلة إلا عندما تكون load_in_8bit=True.
  • load_in_4bit (bool، القيمة الافتراضية False) — تفعيل التكميم بدقة 4 بت.
  • bnb_4bit_quant_type (str، القيمة الافتراضية fp4) — تعيين نوع بيانات التكميم في طبقات bnb.nn.Linear4Bit. الخيارات هي {‘fp4’،‘np4’}.
  • bnb_4bit_use_double_quant (bool، القيمة الافتراضية False) — تفعيل التكميم المتداخل حيث يتم تكميم ثوابت التكميم من التكميم الأول مرة أخرى.
  • bnb_4bit_compute_dtype (bool، القيمة الافتراضية fp16) — يحدد هذا نوع الحساب الذي قد يختلف عن نوع الإدخال. على سبيل المثال، قد تكون المدخلات من نوع fp32، لكن يمكن ضبط الحساب على bf16 لتحقيق تسريع. الخيارات المتاحة هي {‘fp32’،‘fp16’،‘bf16’}.
  • torch_dtype (torch.dtype، القيمة الافتراضية None) — يحدد هذا نوع البيانات (dtype) للطبقات المتبقية غير المُكمّاة. تقترح مكتبة bitsandbytes ضبط القيمة على torch.float16 للنماذج ذات 8 بت، واستخدام نفس نوع البيانات كـ dtype الحسابي للنماذج ذات 4 بت.
  • skip_modules (List[str]، القيمة الافتراضية None) — قائمة صريحة بالوحدات التي لا نقوم بتكميمها. سيكون نوع البيانات لهذه الوحدات torch_dtype.
  • keep_in_fp32_modules (List، القيمة الافتراضية None) — قائمة صريحة بالوحدات التي لا نقوم بتكميمها. نُبقيها في torch.float32.

إضافة لتمكين التكميم بأربعة وثمانية بتات في BitsAndBytes

فئة accelerate.DataLoaderConfiguration

< >

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

المعاملات

  • split_batches (bool، القيمة الافتراضية False) — ما إذا كان المُسرِّع (accelerator) يجب أن يقسّم الدفعات (batches) التي تُنتجها مُحمِّلات البيانات (dataloaders) عبر الأجهزة أم لا. إذا كانت القيمة True، فسيكون حجم الدفعة الفعلي المستخدم هو نفسه في أي نوع من العمليات الموزَّعة، لكن يجب أن يكون مضاعفًا صحيحًا لعدد num_processes الذي تستخدمه. إذا كانت القيمة False، فسيكون حجم الدفعة الفعلي المستخدم هو الحجم المُعيَّن في سكربتك مضروبًا في عدد العمليات.
  • dispatch_batches (bool، القيمة الافتراضية None) — إذا تم ضبطها على True، فإن مُحمِّل البيانات المُعد بواسطة Accelerator يُتكرَّر عليه فقط في العملية الرئيسية، ثم تُقسَّم الدفعات وتُبَثّ إلى كل عملية. ستكون القيمة الافتراضية True لـDataLoader الذي يحتوي على مجموعة بيانات أساسية من نوع IterableDataset، وFalse في الحالات الأخرى.
  • even_batches (bool، القيمة الافتراضية True) — إذا تم ضبطها على True، ففي الحالات التي لا يقسم فيها حجم الدفعة الإجمالي عبر جميع العمليات مجموعة البيانات بشكل صحيح، سيتم تكرار العينات الموجودة في بداية مجموعة البيانات بحيث يمكن تقسيم الدفعة بالتساوي بين جميع العمال.
  • use_seedable_sampler (bool، القيمة الافتراضية False) — ما إذا كان سيتم استخدام عينة عشوائية قابلة للتبذير بالكامل (data_loader.SeedableRandomSampler) أم لا. يضمن أن تكون نتائج التدريب قابلة للتكرار بالكامل باستخدام تقنية أخذ عينات مختلفة. على الرغم من أن النتائج من بذرة إلى أخرى قد تختلف، إلا أن الفروق تكون مهملة في المتوسط عند استخدام عدة بذور مختلفة للمقارنة. يجب أيضًا تشغيله مع set_seed() للحصول على أفضل النتائج.
  • data_seed (int، القيمة الافتراضية None) — البذرة المستخدمة للمولّد الأساسي عند استخدام use_seedable_sampler. إذا كانت None، فسيستخدم المولّد البذرة الافتراضية الحالية من torch.
  • non_blocking (bool، القيمة الافتراضية False) — إذا تم ضبطها على True، فسيستخدم مُحمِّل البيانات المُعد بواسطة Accelerator عمليات نقل غير حاصرة من المضيف إلى الجهاز، مما يتيح تداخلاً أفضل بين اتصال مُحمِّل البيانات والحساب. يُوصى بأن يكون مُحمِّل البيانات المُعد مضبوطاً على pin_memory بقيمة True ليعمل بشكل صحيح.
  • use_stateful_dataloader (bool، القيمة الافتراضية False) — إذا تم ضبطها على True، فسيكون مُهيِّئ البيانات المُعد بواسطة Accelerator مدعوماً بواسطة torchdata.StatefulDataLoader. يتطلب ذلك تثبيت إصدار torchdata 0.8.0 أو أحدث يدعم StatefulDataLoader.

إعدادات للعناصر المتعلقة بمحمّل البيانات عند استدعاء accelerator.prepare.

فئة accelerate.utils.ProjectConfiguration

< >

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

المعاملات

  • project_dir (str، القيمة الافتراضية None) — مسار إلى مجلد لتخزين البيانات.
  • logging_dir (str، القيمة الافتراضية None) — مسار إلى مجلد لتخزين سجلات السجلات المحلية المتوافقة. إذا كانت القيمة None، فإن القيمة الافتراضية هي project_dir.
  • automatic_checkpoint_naming (bool, defaults to False) — Whether saved states should be automatically iteratively named.
  • total_limit (int، القيمة الافتراضية None) — الحد الأقصى لعدد حالات الحفظ الإجمالية التي يجب الاحتفاظ بها.
  • iteration (int، القيمة الافتراضية 0) — التكرار الحالي للحفظ.
  • save_on_each_node (bool، القيمة الافتراضية False) — عند تنفيذ التدريب الموزّع متعدد العقد، ما إذا كان يجب حفظ النماذج والنقاط المحفوظة على كل عقدة، أم على العقدة الرئيسية فقط.

إعدادات لكائن Accelerator بناءً على احتياجات المشروع الداخلي.

set_directories

< >

( project_dir: str | None = None )

يُعيّن self.project_dir وself.logging_dir إلى القيم المناسبة.

متغيرات البيئة

هذه متغيرات بيئية يمكن تفعيلها لاستخدامات مختلفة

  • ACCELERATE_DEBUG_MODE (str): ما إذا كان سيتم تشغيل accelerate في وضع التصحيح. تتوفر مزيد من المعلومات هنا.

التلاعب بالبيانات والعمليات

تشمل هذه العمليات عمليات بيانات تحاكي عمليات torch نفسها، لكنها يمكن استخدامها في العمليات الموزعة.

accelerate.utils.broadcast

< >

( tensorfrom_process: int = 0 )

المعاملات

  • tensor (قائمة/مجموعة/قاموس متداخل من torch.Tensor) — البيانات التي سيتم جمعها.
  • from_process (int، اختياري، القيمة الافتراضية 0) — العملية التي تُرسل منها البيانات

بثّ المصفوفة بشكل تكراري في قائمة/مجموعة/قاموس متداخل من المصفوفات إلى جميع الأجهزة.

accelerate.utils.broadcast_object_list

< >

( object_listfrom_process: int = 0 )

المعاملات

  • object_list (قائمة من كائنات قابلة للتقطيع) — قائمة الكائنات المراد بثها. ستتم إعادة كتابة هذه القائمة في مكانها.
  • from_process (int، اختياري، القيمة الافتراضية 0) — العملية التي تُرسل منها البيانات.

بث قائمة من الكائنات القابلة للتغليف من عملية واحدة إلى العمليات الأخرى.

accelerate.utils.concatenate

< >

( datadim = 0 )

المعاملات

  • data (قائمة/مجموعة/قاموس متداخل من قوائم من الموترات torch.Tensor) — البيانات التي سيتم دمجها.
  • dim (int، اختياري، القيمة الافتراضية 0) — البُعد الذي سيتم الدمج عليه.

التقطيع المتكرر للمصفوفات في قائمة/مجموعة/قاموس متداخل من قوائم المصفوفات التي لها نفس الشكل. إذا كانت هناك دفعة واحدة فقط من البيانات، يتم إرجاعها كما هي.

accelerate.utils.convert_outputs_to_fp32

< >

( model_forward )

accelerate.utils.convert_to_fp32

< >

( tensor )

المعاملات

  • tensor (قائمة/مجموعة/قاموس متداخل من torch.Tensor) — البيانات التي سيتم تحويلها من FP16/BF16 إلى FP32.

يحوّل بشكل تكراري العناصر المضمنة في قائمة/مجموعة/قاموس من الموترات بدقة FP16/BF16 إلى FP32.

accelerate.utils.gather

< >

( tensor )

المعاملات

  • tensor (قائمة/مجموعة/قاموس متداخل من torch.Tensor) — البيانات التي سيتم جمعها.

اجمع المتجهات بشكل تكراري من قائمة/مجموعة/قاموس متداخل من المتجهات من جميع الأجهزة.

accelerate.utils.gather_object

< >

( object: Any )

المعاملات

  • object (قائمة/مجموعة/قاموس متداخل من كائنات قابلة للتخزين) — البيانات التي يجب جمعها.

اجمع كائنًا بشكل تكراري من قائمة/مجموعة/قاموس متداخل من الكائنات من جميع الأجهزة.

accelerate.utils.get_grad_scaler

< >

( distributed_type: DistributedType = None**kwargs )

المعاملات

  • distributed_type (DistributedType، اختياري، الافتراضي None) — نوع البيئة الموزعة.
  • kwargs — حجج إضافية لمُنشئ GradScaler المستخدم.

دالة مساعدة عامة تقوم بتهيئة التنفيذ الصحيح لـ GradScaler بناءً على البيئة وإعادته.

accelerate.utils.get_mixed_precision_context_manager

< >

( native_amp: bool = Falseautocast_kwargs: AutocastKwargs = None )

المعاملات

  • native_amp (bool، اختياري، القيمة الافتراضية False) — ما إذا كانت الدقة المختلطة مفعّلة فعليًا.

إرجاع مدير سياق للتحويل التلقائي للدقة المختلطة

accelerate.utils.listify

< >

( data )

المعاملات

  • data (قائمة/مجموعة/قاموس متداخل من torch.Tensor) — البيانات التي سيتم تحويلها إلى أرقام عادية.

يجد المتجهات بشكل تكراري داخل قائمة/مجموعة/قاموس متداخل، ويحوّلها إلى قائمة من الأرقام.

accelerate.utils.pad_across_processes

< >

( tensordim = 0pad_index = 0pad_first = False )

المعاملات

  • tensor (قائمة/مجموعة/قاموس متداخل من torch.Tensor) — البيانات التي سيتم جمعها.
  • dim (int، اختياري، القيمة الافتراضية 0) — البُعد الذي سيتم إضافة الحشو إليه.
  • pad_index (int، اختياري، القيمة الافتراضية 0) — القيمة التي تُستخدم للتعبئة.
  • pad_first (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب إضافة الحشو في البداية أم في النهاية.

املأ المتجهات (tensors) الموجودة في قائمة/مجموعة/قاموس متداخل من المتجهات من جميع الأجهزة بشكل متكرر حتى تصبح جميعها بنفس الحجم، بحيث يمكن جمعها بأمان.

accelerate.utils.recursively_apply

< >

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

المعاملات

  • func (callable) — الدالة التي سيتم تطبيقها بشكل تكراري.
  • data (قائمة/مجموعة/قاموس متداخل من الكائنات المقبولة بواسطة test_type) — البيانات التي سيتم تطبيق func عليها
  • *args — الحجج الموضعية التي سيتم تمريرها إلى func عند تطبيقها على البيانات المفكوكة.
  • test_type (Callable[[Any], bool]، اختياري، القيمة الافتراضية is_torch_tensor) — شرط يحدد ما إذا كان ينبغي تطبيق func على كائن فرعي معين.
  • error_on_other_type (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب إرجاع خطأ أم لا إذا، بعد فك حزمة data، حصلنا على كائن تُرجع عنه test_type القيمة False. إذا كانت القيمة False، فإن الدالة ستترك مثل هذه الكائنات دون تغيير.
  • **kwargs (معلمات إضافية بالكلمات المفتاحية، اختيارية) — معلمات بالكلمات المفتاحية سيتم تمريرها إلى func عند تطبيقها على البيانات المفكوكة.

تطبيق دالة بشكل تكراري على بنية بيانات قائمة/مجموعة/قاموس متداخلة من نوع أساسي محدد.

accelerate.utils.reduce

< >

( tensorreduction = 'mean'scale = 1.0 )

المعاملات

  • tensor (قائمة/مجموعة/قاموس متداخل من torch.Tensor) — البيانات التي سيتم اختزالها.
  • reduction (str، اختياري، الافتراضي "mean") — طريقة الاختزال. يمكن أن تكون “mean” أو “sum” أو “max” أو “none”
  • scale (float، اختياري) — قيمة تحجيم افتراضية تُطبَّق بعد عملية الاختزال، وهي صالحة على XLA فقط.

تقليل المتجهات بشكل تكراري في قائمة/مجموعة/قاموس متداخل من قوائم المتجهات عبر جميع العمليات، باستخدام متوسط العملية المحددة.

accelerate.utils.send_to_device

< >

( tensordevicenon_blocking = Falseskip_keys = None )

المعاملات

  • tensor (قائمة/مجموعة/قاموس متداخل من torch.Tensor) — البيانات المراد إرسالها إلى جهاز محدد.
  • device (torch.device) — الجهاز المرسل إليه البيانات.
  • non_blocking (bool، اختياري، القيمة الافتراضية False) — إذا كانت True، يتم تنفيذ النقل إلى الجهاز بشكل غير متزامن، مما يتيح تداخل حركة البيانات مع الحساب. لا يكون فعالاً إلا عندما يدعم الجهاز ذلك (مثل CUDA).
  • skip_keys (str أو List[str]، اختياري) — مفتاح أو قائمة مفاتيح في قاموس tensor يجب ألا تُرسل قيمها إلى device المحدد. تبقى العناصر ذات هذه المفاتيح على جهازها الأصلي.

يرسل بشكل تكراري العناصر الموجودة في قائمة/مجموعة/قاموس متداخل من الموترات إلى جهاز محدد.

accelerate.utils.slice_tensors

< >

( datatensor_sliceprocess_index = Nonenum_processes = None )

المعاملات

  • data (قائمة/مجموعة/قاموس متداخل من torch.Tensor) — البيانات التي سيتم تقطيعها.
  • tensor_slice (slice) — المقطع الذي سيتم أخذه.

يقوم بشكل تكراري بأخذ مقطع من قائمة/مجموعة/قاموس متداخل من الموترات.

فحوصات البيئة

تتحقق هذه الوظائف من حالة بيئة العمل الحالية، بما في ذلك معلومات عن نظام التشغيل نفسه، وما يمكنه دعمه، وما إذا كانت التبعيات المحددة مثبتة.

accelerate.utils.is_bf16_available

< >

( ignore_tpu = False )

يتحقق مما إذا كان bf16 مدعوماً، مع إمكانية تجاهل TPU

accelerate.utils.is_mps_available

< >

( min_version = '1.12' )

يتحقق من توفر جهاز MPS. الحد الأدنى للإصدار المطلوب هو 1.12.

accelerate.utils.is_npu_available

( check_device = False )

يتحقق مما إذا كان torch_npu مثبّتًا، وربما مما إذا كان هناك NPU في البيئة

accelerate.utils.is_torch_version

< >

( operation: strversion: str )

المعاملات

  • operation (str) — تمثيل نصي لمُشغِّل، مثل ">" أو "<="
  • version (str) — نسخة نصية من PyTorch

يقارن إصدار PyTorch الحالي بإصدار مرجعي محدد باستخدام عملية.

accelerate.utils.is_torch_xla_available

( check_is_tpu = Falsecheck_is_gpu = False )

تحقق من توفر torch_xla. لتدريب مهمة pytorch أصلية في بيئة تم تثبيت torch xla فيها، اضبط USE_TORCH_XLA على false.

accelerate.utils.is_xpu_available

( check_device = False )

يتحقق من توفر تسريع XPU عبر PyTorch القياسي (>=2.7) ومن المحتمل أن يتحقق من وجود XPU في البيئة

التلاعب بالبيئة

accelerate.utils.patch_environment

< >

( **kwargs )

مدير سياق يضيف كل معامل كلمة مفتاحية مُمرَّر إلى os.environ ثم يزيلها عند الخروج.

سيحوّل القيم في kwargs إلى نصوص ويجعل جميع المفاتيح بأحرف كبيرة.

مثال:

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

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

accelerate.utils.clear_environment

< >

( )

مدير سياق يقوم بمسح متغيرات البيئة مؤقتًا.

عند مغادرة هذا السياق، ستعود متغيرات البيئة السابقة.

مثال:

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

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

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

accelerate.commands.config.default.write_basic_config

< >

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

المعاملات

  • mixed_precision (str، اختياري، القيمة الافتراضية “no”) — دقة مختلطة للاستخدام. يجب أن تكون واحدة من “no” أو “fp16” أو “bf16”
  • save_location (str، اختياري، الافتراضي هو default_json_config_file) — موقع حفظ مخصص اختياري. يجب تمريره إلى --config_file عند استخدام accelerate launch. الموقع الافتراضي داخل مجلد ذاكرة التخزين المؤقت لـ huggingface (~/.cache/huggingface) ولكن يمكن تجاوزه عن طريق تعيين متغير البيئة HF_HOME، يليه accelerate/default_config.yaml.

ينشئ ويحفظ إعدادات أساسية للوحدة العنقودية (Cluster) لاستخدامها على جهاز محلي قد يحتوي على وحدات معالجة رسومية (GPU) متعددة. كما سيضبط المعالج المركزي (CPU) إذا كان الجهاز يعمل بالمعالج المركزي فقط.

عند إعداد 🤗 Accelerate لأول مرة، يمكن استخدام [~utils.write_basic_config] كبديل بدلاً من تشغيل accelerate config لإجراء إعداد سريع.

accelerate.utils.set_numa_affinity

( local_process_index: intverbose: bool | None = None )

المعاملات

  • local_process_index (int) — مؤشر العملية الحالية على الخادم الحالي.
  • verbose (bool، اختياري) — ما إذا كان يجب طباعة تعيين نوى المعالج المركزي الجديدة لكل عملية. إذا تم تفعيل ACCELERATE_DEBUG_MODE، فسيكون الافتراضي True.

يُسند العملية الحالية إلى عقدة NUMA محددة. يكون ذلك أكثر كفاءةً في الغالب عند توفر معالجين على الأقل لكل عقدة.

يتم تخزين هذا الناتج مؤقتًا بين الاستدعاءات. إذا كنت ترغب في تجاوز ذلك، فالرجاء استخدام accelerate.utils.environment.override_numa_afifnity.

accelerate.utils.environment.override_numa_affinity

< >

( local_process_index: intverbose: bool | None = None )

المعاملات

  • local_process_index (int) — مؤشر العملية الحالية على الخادم الحالي.
  • verbose (bool، اختياري) — ما إذا كان سيتم تسجيل تعيين كل معالج CPU. إذا تم تفعيل ACCELERATE_DEBUG_MODE، فسيكون الافتراضي True.

يتجاوز أي توافق NUMA مُعيَّن للعملية الحالية. هذا الأمر مرهق للغاية ويتطلب إعادة حساب التوافق الذي يجب تعيينه، ومن الأفضل استخدام utils.environment.set_numa_affinity بدلاً من ذلك.

accelerate.utils.purge_accelerate_environment

< >

( func_or_cls )

مُزيِّن لتنظيف متغيرات البيئة التي يضبطها accelerate والتي يحددها الصنف أو الدالة المُزيَّنة.

في بعض الحالات، قد يؤدي استدعاء فئات أو دوال معينة إلى تعيين متغيرات بيئة accelerate دون تنظيفها بعد ذلك. كمثال، عند استدعاء:

TrainingArguments(fp16=True, …)

سيتم تعيين متغير البيئة التالي:

ACCELERATE_MIXED_PRECISION=fp16

قد يؤثر ذلك على الأكواد اللاحقة، حيث أن متغير البيئة له الأولوية على TrainingArguments(fp16=False). وهذا الأمر ذو صلة خاصة باختبارات الوحدة، حيث نريد تجنب أن يكون للاختبارات الفردية آثار جانبية على بعضها البعض. زُيِّن دالة الاختبار الفردي أو الفئة بأكملها بهذا الزينة (decorator) للتأكد من أن متغيرات البيئة تُنظَّف بعد كل اختبار. ويعمل هذا مع كلا من unittest.TestCase والفئات العادية (pytest)؛ كما يعمل عند تزيين الفئة الأم.

الذاكرة

accelerate.find_executable_batch_size

< >

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

المعاملات

  • function (callable, اختياري) — دالة للتغليف
  • starting_batch_size (int، اختياري) — حجم الدفعة الذي يجب محاولة ملاءمته في الذاكرة
  • reduce_batch_size_fn (callable، اختياري) — دالة لتحديد حجم الدفعة الجديد بعد حدوث خطأ نفاد الذاكرة. إذا لم تُقدَّم، يُضرب حجم الدفعة في 0.9 عند كل فشل. لا تتلقى الدالة أي حُجج، ويجب أن تُرجع حجم الدفعة الجديد (المُخفَّض) على شكل int.

مُزيِّن أساسي سيحاول تنفيذ function. إذا فشل بسبب استثناءات تتعلق بنفاد الذاكرة أو CUDNN، يتم ضرب حجم الدفعة في 0.9 ثم تمريرها إلى function

يجب أن يستقبل function معامل batch_size كحجته الأولى.

مثال:

>>> from accelerate.utils import find_executable_batch_size


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


>>> train(model, optimizer)

النمذجة

تتعلق هذه الأدوات بالتفاعل مع نماذج PyTorch

accelerate.utils.calculate_maximum_sizes

< >

( model: Module )

يُحسب الحجم الكلي للنموذج وأكبر طبقة فيه

accelerate.utils.compute_module_sizes

< >

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

احسب حجم كل وحدة فرعية من نموذج معين.

accelerate.utils.extract_model_from_parallel

< >

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

المعاملات

  • model (torch.nn.Module) — النموذج الذي سيتم استخراجه.
  • keep_fp32_wrapper (bool، اختياري) — ما إذا كان يجب إزالة خطافات الدقة المختلطة من النموذج.
  • keep_torch_compile (bool، اختياري) — ما إذا كان سيتم فك تغليف النموذج المُجمَّع.
  • recursive (bool، اختياري، الافتراضي False) — ما إذا كان سيتم استخراج جميع حالات module.module من model بشكل تكراري، وكذلك فك تغليف طبقات الفرع الفرعية بشكل تكراري، وليس فقط حاويات التوزيع في المستوى العلوي.

يعيد

torch.nn.Module

النموذج المستخرج.

استخراج النموذج من حاوياته الموزعة.

accelerate.utils.get_balanced_memory

< >

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

المعاملات

  • model (torch.nn.Module) — النموذج المراد تحليله.
  • max_memory (Dict, اختياري) — قاموس يربط معرّف الجهاز بالحد الأقصى للذاكرة. إذا لم يُضبط، فسيتم افتراض الحد الأقصى للذاكرة المتاحة. مثال: max_memory={0: "1GB"}.
  • no_split_module_classes (List[str]، اختياري) — قائمة بأسماء فئات الطبقات التي يجب ألا تُقسَّم عبر الأجهزة (على سبيل المثال أي طبقة تحتوي على اتصال متبقي).
  • dtype (str أو torch.dtype، اختياري) — إذا تم تقديمه، سيتم تحويل الأوزان إلى ذلك النوع عند التحميل.
  • special_dtypes (Dict[str, Union[str, torch.device]]، اختياري) — إذا تم تقديمه، أنواع البيانات الخاصة التي يجب مراعاتها لبعض الأوزان المحددة (ستتجاوز نوع البيانات المستخدم كافتراضي لجميع الأوزان).
  • low_zero (bool، اختياري) — يقلل عدد الأوزان على وحدة معالجة الرسوميات 0، وهو أمر مريح عند استخدامها لعمليات أخرى (مثل دالة generate في Transformers).

احسب قاموس max_memory لـ infer_auto_device_map() سيوازن استخدام كل وحدة معالجة رسومية متاحة.

تتم جميع العمليات الحسابية من خلال تحليل أحجام وأنواع البيانات (dtypes) لمعاملات النموذج. ونتيجةً لذلك، يمكن أن يكون النموذج على جهاز meta (كما لو تم تهيئته داخل مدير السياق init_empty_weights).

accelerate.utils.get_max_layer_size

< >

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

المعاملات

  • modules (List[Tuple[str, torch.nn.Module]]) — قائمة الوحدات المسماة التي نرغب في تحديد حجم الطبقة الأقصى لها.
  • module_sizes (Dict[str, int]) — قاموس يربط كل اسم طبقة بحجمها (كما يولّده compute_module_sizes).
  • no_split_module_classes (List[str]) — قائمة بأسماء الفئات للطبقات التي لا نرغب في تقسيمها.

يعيد

Tuple[int, List[str]]

الحد الأقصى لحجم طبقة مع قائمة أسماء الطبقات التي تحقق ذلك الحد الأقصى.

دالة مساعدة تقوم بمسح قائمة من الوحدات المسماة وإرجاع الحد الأقصى للحجم المستخدم بواسطة طبقة كاملة واحدة. حيث يُعرَّف مفهوم الطبقة على النحو التالي:

  • وحدة لا تحتوي على وحدات فرعية مباشرة (معلمات ومخازن فقط)
  • وحدة يكون اسم صفها ضمن القائمة no_split_module_classes

accelerate.infer_auto_device_map

< >

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

المعاملات

  • model (torch.nn.Module) — النموذج المراد تحليله.
  • max_memory (Dict, اختياري) — قاموس يربط معرّف الجهاز بالحد الأقصى للذاكرة. إذا لم يُضبط، فسيتم افتراض الحد الأقصى للذاكرة المتاحة. مثال: max_memory={0: "1GB"}.
  • no_split_module_classes (List[str]، اختياري) — قائمة بأسماء فئات الطبقات التي يجب ألا تُقسَّم عبر الأجهزة (على سبيل المثال أي طبقة تحتوي على اتصال متبقي).
  • dtype (str أو torch.dtype، اختياري) — إذا تم تقديمه، سيتم تحويل الأوزان إلى ذلك النوع عند التحميل.
  • special_dtypes (Dict[str, Union[str, torch.device]]، اختياري) — إذا تم تقديمه، أنواع البيانات الخاصة التي يجب مراعاتها لبعض الأوزان المحددة (ستتجاوز نوع البيانات المستخدم كافتراضي لجميع الأوزان).
  • verbose (bool، اختياري، الافتراضي False) — ما إذا كان سيتم توفير عبارات تصحيح الأخطاء أثناء بناء الدالة لـ device_map.
  • clean_result (bool، اختياري، القيمة الافتراضية True) — تنظيف خريطة الأجهزة الناتجة عن طريق تجميع جميع الوحدات الفرعية التي تعمل على نفس الجهاز معًا.
  • offload_buffers (bool، اختياري، القيمة الافتراضية False) — في الطبقات التي يتم نقلها إلى وحدة المعالجة المركزية أو القرص الصلب، ما إذا كان سيتم نقل المخازن (buffers) إلى جانب المعاملات أم لا.
  • fallback_allocation (bool، اختياري، القيمة الافتراضية False) — عند فشل التخصيص العادي، حاول تخصيص وحدة تتناسب مع حد الحجم باستخدام BFS.

احسب خريطة جهاز لنموذج معين مع إعطاء الأولوية لوحات GPU، ثم نقل الأحمال إلى وحدة المعالجة المركزية CPU، وأخيراً النقل إلى القرص، بحيث:

  • لا نتجاوز الذاكرة المتاحة لأي من وحدات معالجة الرسوميات.
  • إذا كان الإزاحة إلى وحدة المعالجة المركزية (CPU) مطلوبة، فسيظل هناك دائمًا مساحة متاحة على وحدة معالجة الرسوميات (GPU) 0 لإعادة طبقة الإزاحة إلى وحدة المعالجة المركزية (CPU) التي تمتلك أكبر حجم.
  • إذا كان النقل إلى وحدة المعالجة المركزية (CPU) مطلوبًا، فإننا لا نتجاوز ذاكرة الوصول العشوائي (RAM) المتاحة على وحدة المعالجة المركزية.
  • إذا كان التفريغ إلى القرص مطلوبًا، فسيظل هناك دائمًا مساحة متاحة على وحدة المعالجة المركزية لإعادة طبقة التفريغ على القرص التي تمتلك أكبر حجم.

تتم جميع العمليات الحسابية من خلال تحليل أحجام وأنواع البيانات (dtypes) لمعاملات النموذج. ونتيجةً لذلك، يمكن أن يكون النموذج على جهاز meta (كما لو تم تهيئته داخل مدير السياق init_empty_weights).

accelerate.load_checkpoint_in_model

< >

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

المعاملات

  • model (torch.nn.Module) — النموذج الذي نرغب في تحميل نقطة تفتيش (checkpoint) فيه.
  • checkpoint (str أو os.PathLike) — نقطة التفتيش (checkpoint) المجلد الذي سيتم تحميله. يمكن أن تكون:
    • مسار إلى ملف يحتوي على حالة النموذج الكاملة
    • مسار إلى ملف .json يحتوي على فهرس لنقطة تحقق مقسمة
    • مسار إلى مجلد يحتوي على ملف .index.json فريد وقطع نقطة التفتيش.
    • مسار إلى مجلد يحتوي على ملف pytorch_model.bin فريد أو ملف model.safetensors.
  • device_map (Dict[str, Union[int, str, torch.device]], اختياري) — خريطة تحدد المكان الذي يجب أن يذهب إليه كل وحدة فرعية. لا حاجة إلى تفصيلها لكل اسم معلمة/مخزن، فبمجرد أن يكون اسم وحدة معينة داخلها، سيتم إرسال كل وحدة فرعية منها إلى نفس الجهاز.
  • offload_folder (str أو os.PathLike، اختياري) — إذا احتوى device_map على أي قيمة "disk"، فهو المجلد الذي سننقل إليه الأوزان.
  • dtype (str أو torch.dtype، اختياري) — إذا تم تقديمه، سيتم تحويل الأوزان إلى ذلك النوع عند التحميل.
  • offload_state_dict (bool، اختياري، القيمة الافتراضية False) — إذا كانت True، فسيتم نقل قاموس حالة المعالج المركزي مؤقتًا إلى القرص الصلب لتجنب نفاد ذاكرة المعالج المركزي إذا لم يتسع وزن قاموس حالة المعالج المركزي + أكبر شريحة.
  • offload_buffers (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم تضمين المخازن (buffers) في الأوزان المُحمّلة على القرص.
  • keep_in_fp32_modules(List[str], اختياري) — قائمة بالوحدات التي نحتفظ بها في نوع البيانات torch.float32.
  • offload_8bit_bnb (bool، اختياري) — ما إذا كان سيتم تفعيل نقل وحدات 8-بت إلى وحدة المعالجة المركزية/القرص.
  • strict (bool، اختياري، الافتراضي False) — ما إذا كان سيتم فرض مطابقة مفاتيح state_dict في نقطة الحفظ مع مفاتيح state_dict للنموذج بشكل صارم.
  • full_state_dict (bool، اختياري، القيمة الافتراضية True) — إذا تم تعيين هذا إلى True، فسيتم تجميع جميع الموترات في state_dict المحمّل. لن يكون هناك ShardedTensor أو DTensor في state_dict المحمّل.
  • broadcast_from_rank0 (False، اختياري، القيمة الافتراضية False) — عندما تكون الخانة True، يجب تهيئة ProcessGroup موزّع. يجب أن يستقبل rank0 حالة state_dict كاملة، وسيبثّ المصفوفات (tensors) الموجودة في state_dict واحدة تلو الأخرى إلى الرتب الأخرى. ستستقبل الرتب الأخرى المصفوفات وتُجزّئها (إن كان ذلك مطبقاً) وفقاً للتجزئات المحلية في النموذج.

يحمّل نقطة تفتيش (قد تكون مقسّمة) داخل نموذج، مع إمكانية إرسال الأوزان إلى جهاز محدد أثناء تحميلها.

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

accelerate.utils.load_offloaded_weights

< >

( modelindexoffload_folder )

المعاملات

  • model (torch.nn.Module) — النموذج الذي سيتم تحميل الأوزان فيه.
  • index (dict) — قاموس يحتوي على اسم المعامل وبياناته الوصفية لكل معامل تم نقله من النموذج.
  • offload_folder (str) — المجلد الذي تُخزَّن فيه الأوزان المُحمَّلة.

يحمّل الأوزان من مجلد الإزاحة إلى النموذج.

accelerate.utils.load_state_dict

< >

( checkpoint_filedevice_map = None )

المعاملات

  • checkpoint_file (str) — مسار نقطة التفتيش التي سيتم تحميلها.
  • device_map (Dict[str, Union[int, str, torch.device]], اختياري) — خريطة تحدد المكان الذي يجب أن يذهب إليه كل وحدة فرعية. لا حاجة إلى تفصيلها لكل اسم معلمة/مخزن، فبمجرد أن يكون اسم وحدة معينة داخلها، سيتم إرسال كل وحدة فرعية منها إلى نفس الجهاز.

تحميل نقطة تحقق من ملف معيّن. إذا كانت نقطة التحقق بصيغة safetensors وتم تمرير خريطة أجهزة، يمكن تحميل الأوزان بسرعة مباشرة على وحدة معالجة الرسوميات (GPU).

accelerate.utils.offload_state_dict

< >

( save_dir: str | os.PathLikestate_dict: dict )

المعاملات

  • save_dir (str أو os.PathLike) — المجلد الذي سيتم فيه تفريغ حالة القاموس (state dict).
  • state_dict (Dict[str, torch.Tensor]) — قاموس الموترات التي سيتم نقلها.

تفريغ حالة القاموس (state dict) في مجلد محدد.

accelerate.utils.retie_parameters

< >

( modeltied_params )

المعاملات

  • model (torch.nn.Module) — النموذج الذي سيتم فيه إعادة ربط المعاملات.
  • tied_params (List[List[str]]) — معامل تعيين اسم المعامل إلى اسم المعامل المرتبط به كما يُحصل عليه بواسطة find_tied_parameters.

يعيد ربط المعاملات المرتبطة في نموذج معيّن إذا كان الرابط قد انقطع (على سبيل المثال عند إضافة الخطافات).

accelerate.utils.set_module_tensor_to_device

< >

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

المعاملات

  • module (torch.nn.Module) — الوحدة التي يحتوي عليها الموتر الذي نريد نقله.
  • tensor_name (str) — الاسم الكامل للمعامل/المخزن.
  • device (int أو str أو torch.device) — الجهاز الذي سيتم تعيين المصفوفة عليه.
  • value (torch.Tensor، اختياري) — قيمة المصفوفة (مفيد عند الانتقال من جهاز meta إلى أي جهاز آخر).
  • dtype (torch.dtype، اختياري) — إذا تم تمرير القيمة، فسيتم تحويل قيمة المعامل إلى هذا dtype. وإلا، فسيتم تحويل value إلى نوع dtype للمعامل الموجود مسبقًا في النموذج.
  • fp16_statistics (torch.HalfTensor، اختياري) — قائمة إحصاءات fp16 التي يجب تعيينها على الوحدة، وتُستخدم لتسلسل نماذج 8 بت.
  • tied_params_map (Dict[int, Dict[torch.device, torch.Tensor]], اختياري، القيمة الافتراضية None) — خريطة من مؤشرات البيانات الحالية إلى قواميس من الأجهزة إلى الأوزان المرتبطة التي تم إرسالها بالفعل. بالنسبة لجهاز التنفيذ المعطى، يكون هذا المعامل مفيدًا لإعادة استخدام أول مؤشر متاح لوزن مشترك على الجهاز لجميع الآخرين، بدلاً من تكرار الذاكرة.
  • non_blocking (bool، اختياري، القيمة الافتراضية False) — إذا كانت True، فسيكون نقل البيانات إلى الجهاز غير متزامن بالنسبة للمضيف، إن أمكن.
  • clear_cache (bool، اختياري، القيمة الافتراضية True) — ما إذا كان سيتم مسح ذاكرة التخزين المؤقت للجهاز بعد تعيين المصفوفة على الجهاز.

دالة مساعدة لضبط متجه (معامل أو مخزن) معين من وحدة على جهاز محدد (لاحظ أن تنفيذ param.to(device) ينشئ متجهاً جديداً غير مرتبط بالمعامل، ولهذا نحتاج إلى هذه الدالة).

accelerate.utils.get_module_children_bottom_up

< >

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

المعاملات

  • model (torch.nn.Module) — النموذج الذي سيتم الحصول على أبنائه

يعيد

list[torch.nn.Module]

قائمة بأبناء وحدات model بترتيب من الأسفل إلى الأعلى. العنصر الأخير هو model نفسه.

Traverse النموذج بالترتيب من الأسفل إلى الأعلى وإرجاع الوحدات الفرعية بهذا الترتيب.

مواز

تشمل هذه الأدوات أدوات عامة يجب استخدامها عند العمل بالتوازي.

accelerate.utils.extract_model_from_parallel

< >

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

المعاملات

  • model (torch.nn.Module) — النموذج الذي سيتم استخراجه.
  • keep_fp32_wrapper (bool، اختياري) — ما إذا كان يجب إزالة خطافات الدقة المختلطة من النموذج.
  • keep_torch_compile (bool، اختياري) — ما إذا كان سيتم فك تغليف النموذج المُجمَّع.
  • recursive (bool، اختياري، الافتراضي False) — ما إذا كان سيتم استخراج جميع حالات module.module من model بشكل تكراري، وكذلك فك تغليف طبقات الفرع الفرعية بشكل تكراري، وليس فقط حاويات التوزيع في المستوى العلوي.

يعيد

torch.nn.Module

النموذج المستخرج.

استخراج النموذج من حاوياته الموزعة.

accelerate.utils.save

< >

( objfsave_on_each_node: bool = Falsesafe_serialization: bool = False )

المعاملات

  • obj — البيانات التي سيتم حفظها
  • f — الملف (أو الكائن المشابه للملف) المستخدم لحفظ البيانات
  • save_on_each_node (bool، اختياري، القيمة الافتراضية False) — ما إذا كان الحفظ يتم فقط على العملية الرئيسية العامة
  • safe_serialization (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم حفظ obj باستخدام safetensors أو بالطريقة التقليدية في PyTorch (التي تستخدم pickle).

احفظ البيانات على القرص. استخدم بدلاً من torch.save().

accelerate.utils.load

< >

( fmap_location = None**kwargs )

المعاملات

  • f — الملف (أو الكائن المشابه للملف) المستخدم لتحميل البيانات
  • map_location — دالة، أو torch.device، أو نص، أو قاموس يحدد كيفية إعادة تعيين مواقع التخزين
  • **kwargs — معلمات إضافية بالكلمات المفتاحية تمريرها إلى torch.load().

بديل متوافق يمكن استخدامه مباشرةً بدلاً من torch.load()، يتيح استخدام weights_only إذا كانت إصدار torch هو 2.4.0 أو أحدث. وإلا سيتم تجاهل معامل الكلمة المفتاحية.

سيتم أيضًا إضافة (ثم إزالة) استثناء لمصفوفات numpy

accelerate.utils.wait_for_everyone

< >

( )

يُدخل نقطة حجب في السكربت، مما يضمن وصول جميع العمليات إلى هذه النقطة قبل المتابعة.

تأكد من أن جميع العمليات ستصل إلى هذه التعليمات، وإلا فإن إحدى عملياتك ستعلق إلى الأبد.

عشوائي

تتعلق هذه الأدوات بإعداد جميع حالات العشوائية ومزامنتها.

accelerate.utils.set_seed

< >

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

المعاملات

  • seed (int) — البذرة التي يجب تعيينها.
  • device_specific (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب تغيير البذرة قليلاً على كل جهاز باستخدام self.process_index.
  • deterministic (bool، اختياري، الافتراضي False) — ما إذا كان سيتم استخدام الخوارزميات الحتمية حيثما كانت متاحة. قد يؤدي ذلك إلى إبطاء التدريب.

دالة مساعدة لضمان سلوك قابل للتكرار لضبط البذرة في random وnumpy وtorch.

accelerate.utils.synchronize_rng_state

< >

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

accelerate.synchronize_rng_states

< >

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

PyTorch XLA

تشمل هذه الأدوات دوال مساعدة مفيدة عند استخدام PyTorch مع XLA.

accelerate.utils.install_xla

< >

( upgrade: bool = False )

المعاملات

  • upgrade (bool، اختياري، الافتراضي False) — ما إذا كان يجب ترقية torch وتثبيت أحدث عجلات torch_xla.

دالة مساعدة لتثبيت عجلات xla المناسبة بناءً على إصدار torch في Google Colaboratory.

مثال:

>>> from accelerate.utils import install_xla

>>> install_xla(upgrade=True)

تحميل أوزان النموذج

تشمل هذه الأدوات دوالاً مساعدة مفيدة لتحميل نقاط التفتيش.

accelerate.load_checkpoint_in_model

< >

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

المعاملات

  • model (torch.nn.Module) — النموذج الذي نرغب في تحميل نقطة تفتيش (checkpoint) فيه.
  • checkpoint (str أو os.PathLike) — نقطة التفتيش (checkpoint) المجلد الذي سيتم تحميله. يمكن أن تكون:
    • مسار إلى ملف يحتوي على حالة النموذج الكاملة
    • مسار إلى ملف .json يحتوي على فهرس لنقطة تحقق مقسمة
    • مسار إلى مجلد يحتوي على ملف .index.json فريد وقطع نقطة التفتيش.
    • مسار إلى مجلد يحتوي على ملف pytorch_model.bin فريد أو ملف model.safetensors.
  • device_map (Dict[str, Union[int, str, torch.device]], اختياري) — خريطة تحدد المكان الذي يجب أن يذهب إليه كل وحدة فرعية. لا حاجة إلى تفصيلها لكل اسم معلمة/مخزن، فبمجرد أن يكون اسم وحدة معينة داخلها، سيتم إرسال كل وحدة فرعية منها إلى نفس الجهاز.
  • offload_folder (str أو os.PathLike، اختياري) — إذا احتوى device_map على أي قيمة "disk"، فهو المجلد الذي سننقل إليه الأوزان.
  • dtype (str أو torch.dtype، اختياري) — إذا تم تقديمه، سيتم تحويل الأوزان إلى ذلك النوع عند التحميل.
  • offload_state_dict (bool، اختياري، القيمة الافتراضية False) — إذا كانت True، فسيتم نقل قاموس حالة المعالج المركزي مؤقتًا إلى القرص الصلب لتجنب نفاد ذاكرة المعالج المركزي إذا لم يتسع وزن قاموس حالة المعالج المركزي + أكبر شريحة.
  • offload_buffers (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم تضمين المخازن (buffers) في الأوزان المُحمّلة على القرص.
  • keep_in_fp32_modules(List[str], اختياري) — قائمة بالوحدات التي نحتفظ بها في نوع البيانات torch.float32.
  • offload_8bit_bnb (bool، اختياري) — ما إذا كان سيتم تفعيل نقل وحدات 8-بت إلى وحدة المعالجة المركزية/القرص.
  • strict (bool، اختياري، الافتراضي False) — ما إذا كان سيتم فرض مطابقة مفاتيح state_dict في نقطة الحفظ مع مفاتيح state_dict للنموذج بشكل صارم.
  • full_state_dict (bool، اختياري، القيمة الافتراضية True) — إذا تم تعيين هذا إلى True، فسيتم تجميع جميع الموترات في state_dict المحمّل. لن يكون هناك ShardedTensor أو DTensor في state_dict المحمّل.
  • broadcast_from_rank0 (False، اختياري، القيمة الافتراضية False) — عندما تكون الخانة True، يجب تهيئة ProcessGroup موزّع. يجب أن يستقبل rank0 حالة state_dict كاملة، وسيبثّ المصفوفات (tensors) الموجودة في state_dict واحدة تلو الأخرى إلى الرتب الأخرى. ستستقبل الرتب الأخرى المصفوفات وتُجزّئها (إن كان ذلك مطبقاً) وفقاً للتجزئات المحلية في النموذج.

يحمّل نقطة تفتيش (قد تكون مقسّمة) داخل نموذج، مع إمكانية إرسال الأوزان إلى جهاز محدد أثناء تحميلها.

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

التكميم

تشمل هذه الأدوات دوالاً مساعدة مفيدة لتهيئة النموذج.

accelerate.utils.load_and_quantize_model

< >

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

المعاملات

  • model (torch.nn.Module) — النموذج المُدخل. يمكن أن يكون النموذج محملاً بالفعل أو على جهاز meta
  • bnb_quantization_config (BnbQuantizationConfig) — معاملات التكميم الخاصة بـ bitsandbytes
  • weights_location (str أو os.PathLike) — المجلد weights_location الذي سيتم تحميله. يمكن أن يكون:
    • مسار إلى ملف يحتوي على حالة النموذج الكاملة
    • مسار إلى ملف .json يحتوي على فهرس لنقطة تحقق مقسمة
    • مسار إلى مجلد يحتوي على ملف .index.json فريد وقطع نقطة التفتيش.
    • مسار إلى مجلد يحتوي على ملف pytorch_model.bin فريد.
  • device_map (Dict[str, Union[int, str, torch.device]], اختياري) — خريطة تحدد المكان الذي يجب أن يذهب إليه كل وحدة فرعية. لا حاجة إلى تفصيلها لكل اسم معلمة/مخزن، فبمجرد أن يكون اسم وحدة معينة داخلها، سيتم إرسال كل وحدة فرعية منها إلى نفس الجهاز.
  • no_split_module_classes (List[str]، اختياري) — قائمة بأسماء فئات الطبقات التي يجب ألا تُقسَّم عبر الأجهزة (على سبيل المثال أي طبقة تحتوي على اتصال متبقي).
  • max_memory (Dict، اختياري) — قاموس يربط معرّف الجهاز بحدّ الذاكرة الأقصى. إذا لم يُضبط، فسيُستخدم الحد الأقصى للذاكرة المتاحة افتراضيًا.
  • offload_folder (str أو os.PathLike، اختياري) — إذا احتوى device_map على أي قيمة "disk"، فهو المجلد الذي سننقل إليه الأوزان.
  • offload_state_dict (bool، اختياري، القيمة الافتراضية False) — إذا كانت True، فسيتم نقل قاموس حالة المعالج المركزي مؤقتًا إلى القرص الصلب لتجنب نفاد ذاكرة المعالج المركزي إذا لم يتسع وزن قاموس حالة المعالج المركزي + أكبر شريحة.

يعيد

torch.nn.Module

النموذج المُكمَّم

ستقوم هذه الدالة بتكميم النموذج المُدخل باستخدام الإعدادات المرتبطة المُمررة في bnb_quantization_config. إذا كان النموذج على جهاز meta، فسنقوم بتحميل الأوزان وتوزيعها وفقاً لـdevice_map المُمرر. أما إذا كان النموذج محملاً بالفعل، فسنقوم بتكميم النموذج ووضع النموذج على وحدة معالجة الرسوميات (GPU)،

Update on GitHub