Accelerate documentation
دوال وفئات مساعدة
دوال وفئات مساعدة
فيما يلي مجموعة متنوعة من دوال الأداة التي يوفرها 🤗 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 ويمكن تمريرها كمعاملات.
مستقل
هذه فئات بيانات مستقلة تُستخدم للتحقق، مثل نوع نظام التوزيع المستخدم
يمثل نوع بيئة الحساب.
القيم:
- LOCAL_MACHINE — أجهزة العناقيد الخاصة/المخصصة.
- AMAZON_SAGEMAKER — Amazon SageMaker كبيئة للحوسبة.
يمثل نوعًا من البيئات الموزعة.
القيم:
- لا — ليست بيئة موزعة، بل عملية واحدة فقط.
- 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.
يمثل خلفية دينامو (انظر 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.
يمثل نوعًا من متتبعات التجارب المدعومة
القيم:
- الكل — جميع العتّادات المتاحة في البيئة والمدعومة
- TENSORBOARD — TensorBoard كأداة لتتبع التجارب
- WANDB — wandb كمتتبع للتجارب
- TRACKIO — أداة trackio لتتبع التجارب
- COMETML — comet_ml كمتتبع للتجارب
- MLFLOW — أداة mlflow لتتبع التجارب
- CLEARML — clearml كمتتبع للتجارب
- DVCLIVE — dvclive كمتتبع للتجارب
- SWANLAB — swanlab كأداة لتتبع التجارب
يمثل نوعًا من الدقة المستخدمة على القيم العائمة
القيم:
- لا — باستخدام الدقة الكاملة (FP32)
- FP16 — باستخدام الدقة النصفية
- BF16 — باستخدام دقة الفاصلة العائمة للدماغ
يمثل نوعًا من البيئات الموزعة.
القيم:
- لا — ليست بيئة موزعة، بل عملية واحدة فقط.
- DATA_PARALLEL — باستخدام موازاة البيانات الموزعة من sagemaker.
- MODEL_PARALLEL — باستخدام توازٍ موزّع للنماذج من sagemaker.
Kwargs
هذه هي الحجج القابلة للتخصيص للتفاعلات المحددة في مختلف أنحاء منظومة PyTorch التي تتولى Accelerate إدارتها في الخلفية.
استخدم هذا الكائن في Accelerator لديك لتخصيص كيفية عمل torch.autocast. يُرجى الرجوع إلى
توثيق هذا context manager لمزيد من
المعلومات حول كل حجة.
فئة 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> )
استخدم هذا الكائن في Accelerator لديك لتخصيص كيفية تغليف نموذجك في torch.nn.parallel.DistributedDataParallel. يُرجى الرجوع إلى توثيق هذا الغلاف لمزيد من المعلومات حول كل حجة.
فئة accelerate.GradScalerKwargs
< source >( 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 لمزيد من المعلومات حول كل حجة.
فئة accelerate.InitProcessGroupKwargs
< source >( backend: str | None = 'nccl'init_method: str | None = Nonetimeout: datetime.timedelta | None = None )
استخدم هذا الكائن في Accelerator لديك لتخصيص تهيئة العمليات الموزعة. يرجى الرجوع إلى توثيق هذه method لمزيد من المعلومات حول كل حجة.
ملاحظة: إذا تم تعيين timeout إلى None، فسيكون الافتراضي معتمدًا على كيفية تعيين backend.
مزيج داخلي (Internal mixin) يطبّق طريقة to_kwargs() لفئة البيانات (dataclass).
يعيد قاموسًا يحتوي على السمات التي تختلف قيمها عن الافتراضي لهذه الفئة.
الإضافات
هذه إضافات يمكن تمريرها إلى كائن Accelerator. وعلى الرغم من تعريفها في أماكن أخرى من التوثيق، فإن جميعها متاحة للاطلاع عليها هنا من باب التسهيل:
فئة 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 )
المعاملات
- 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
< source >( prefix = ''mismatches = Noneconfig = Nonemust_match = True**kwargs )
معالجة إعدادات DeepSpeed باستخدام القيم من kwargs.
يُعيّن HfDeepSpeedWeakref لاستخدام إعدادات إضافة deepspeed الحالية
فئة 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 )
المعاملات
- 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 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]، القيمة الافتراضية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).
بناءً على model، ينشئ auto_wrap_policy استناداً إلى السياسة المُمرَّرة، مع تحديد ما إذا كان بإمكاننا استخدام transformer_cls_to_wrap
يحدد سياسة الدقة المختلطة لـ FSDP
اضبط إعدادات StateDictType بناءً على StateDictType.
يتحقق من سياسة الدقة المختلطة، مع تجريد التفاصيل لتجنب استيراد المكتبات إذا لم تكن مطلوبة.
فئة accelerate.utils.GradientAccumulationPlugin
< source >( 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. تمرير كلاهما معاً يؤدي إلى ظهور خطأ.
فئة 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 )
المعاملات
- 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
< source >( 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
< 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 )
المعاملات
- 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
< 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 )
المعاملات
- 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. يتطلب ذلك تثبيت إصدارtorchdata0.8.0 أو أحدث يدعم StatefulDataLoader.
إعدادات للعناصر المتعلقة بمحمّل البيانات عند استدعاء accelerator.prepare.
فئة 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 )
المعاملات
- project_dir (
str، القيمة الافتراضيةNone) — مسار إلى مجلد لتخزين البيانات. - logging_dir (
str، القيمة الافتراضيةNone) — مسار إلى مجلد لتخزين سجلات السجلات المحلية المتوافقة. إذا كانت القيمةNone، فإن القيمة الافتراضية هيproject_dir. - automatic_checkpoint_naming (
bool, defaults toFalse) — Whether saved states should be automatically iteratively named. - total_limit (
int، القيمة الافتراضيةNone) — الحد الأقصى لعدد حالات الحفظ الإجمالية التي يجب الاحتفاظ بها. - iteration (
int، القيمة الافتراضية0) — التكرار الحالي للحفظ. - save_on_each_node (
bool، القيمة الافتراضيةFalse) — عند تنفيذ التدريب الموزّع متعدد العقد، ما إذا كان يجب حفظ النماذج والنقاط المحفوظة على كل عقدة، أم على العقدة الرئيسية فقط.
إعدادات لكائن Accelerator بناءً على احتياجات المشروع الداخلي.
يُعيّن self.project_dir وself.logging_dir إلى القيم المناسبة.
متغيرات البيئة
هذه متغيرات بيئية يمكن تفعيلها لاستخدامات مختلفة
ACCELERATE_DEBUG_MODE(str): ما إذا كان سيتم تشغيل accelerate في وضع التصحيح. تتوفر مزيد من المعلومات هنا.
التلاعب بالبيانات والعمليات
تشمل هذه العمليات عمليات بيانات تحاكي عمليات torch نفسها، لكنها يمكن استخدامها في العمليات الموزعة.
accelerate.utils.broadcast
< source >( tensorfrom_process: int = 0 )
بثّ المصفوفة بشكل تكراري في قائمة/مجموعة/قاموس متداخل من المصفوفات إلى جميع الأجهزة.
accelerate.utils.broadcast_object_list
< source >( object_listfrom_process: int = 0 )
بث قائمة من الكائنات القابلة للتغليف من عملية واحدة إلى العمليات الأخرى.
accelerate.utils.concatenate
< source >( datadim = 0 )
التقطيع المتكرر للمصفوفات في قائمة/مجموعة/قاموس متداخل من قوائم المصفوفات التي لها نفس الشكل. إذا كانت هناك دفعة واحدة فقط من البيانات، يتم إرجاعها كما هي.
accelerate.utils.convert_to_fp32
< source >( tensor )
يحوّل بشكل تكراري العناصر المضمنة في قائمة/مجموعة/قاموس من الموترات بدقة FP16/BF16 إلى FP32.
accelerate.utils.gather
< source >( tensor )
اجمع المتجهات بشكل تكراري من قائمة/مجموعة/قاموس متداخل من المتجهات من جميع الأجهزة.
accelerate.utils.gather_object
< source >( object: Any )
اجمع كائنًا بشكل تكراري من قائمة/مجموعة/قاموس متداخل من الكائنات من جميع الأجهزة.
accelerate.utils.get_grad_scaler
< source >( distributed_type: DistributedType = None**kwargs )
دالة مساعدة عامة تقوم بتهيئة التنفيذ الصحيح لـ GradScaler بناءً على البيئة وإعادته.
accelerate.utils.get_mixed_precision_context_manager
< source >( native_amp: bool = Falseautocast_kwargs: AutocastKwargs = None )
إرجاع مدير سياق للتحويل التلقائي للدقة المختلطة
accelerate.utils.listify
< source >( data )
يجد المتجهات بشكل تكراري داخل قائمة/مجموعة/قاموس متداخل، ويحوّلها إلى قائمة من الأرقام.
accelerate.utils.pad_across_processes
< source >( 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
< source >( 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
< source >( tensorreduction = 'mean'scale = 1.0 )
تقليل المتجهات بشكل تكراري في قائمة/مجموعة/قاموس متداخل من قوائم المتجهات عبر جميع العمليات، باستخدام متوسط العملية المحددة.
accelerate.utils.send_to_device
< source >( 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
< source >( datatensor_sliceprocess_index = Nonenum_processes = None )
يقوم بشكل تكراري بأخذ مقطع من قائمة/مجموعة/قاموس متداخل من الموترات.
فحوصات البيئة
تتحقق هذه الوظائف من حالة بيئة العمل الحالية، بما في ذلك معلومات عن نظام التشغيل نفسه، وما يمكنه دعمه، وما إذا كانت التبعيات المحددة مثبتة.
يتحقق مما إذا كان bf16 مدعوماً، مع إمكانية تجاهل TPU
يتحقق من توفر جهاز MPS. الحد الأدنى للإصدار المطلوب هو 1.12.
يتحقق مما إذا كان torch_npu مثبّتًا، وربما مما إذا كان هناك NPU في البيئة
accelerate.utils.is_torch_version
< source >( operation: strversion: str )
يقارن إصدار PyTorch الحالي بإصدار مرجعي محدد باستخدام عملية.
تحقق من توفر torch_xla. لتدريب مهمة pytorch أصلية في بيئة تم تثبيت torch xla فيها، اضبط USE_TORCH_XLA على false.
يتحقق من توفر تسريع XPU عبر PyTorch القياسي (>=2.7) ومن المحتمل أن يتحقق من وجود XPU في البيئة
التلاعب بالبيئة
مدير سياق يضيف كل معامل كلمة مفتاحية مُمرَّر إلى os.environ ثم يزيلها عند الخروج.
سيحوّل القيم في kwargs إلى نصوص ويجعل جميع المفاتيح بأحرف كبيرة.
مدير سياق يقوم بمسح متغيرات البيئة مؤقتًا.
عند مغادرة هذا السياق، ستعود متغيرات البيئة السابقة.
accelerate.commands.config.default.write_basic_config
< source >( 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 لإجراء إعداد سريع.
يُسند العملية الحالية إلى عقدة NUMA محددة. يكون ذلك أكثر كفاءةً في الغالب عند توفر معالجين على الأقل لكل عقدة.
يتم تخزين هذا الناتج مؤقتًا بين الاستدعاءات. إذا كنت ترغب في تجاوز ذلك، فالرجاء استخدام accelerate.utils.environment.override_numa_afifnity.
accelerate.utils.environment.override_numa_affinity
< source >( local_process_index: intverbose: bool | None = None )
يتجاوز أي توافق NUMA مُعيَّن للعملية الحالية. هذا الأمر مرهق للغاية ويتطلب إعادة حساب التوافق الذي يجب تعيينه، ومن الأفضل استخدام utils.environment.set_numa_affinity بدلاً من ذلك.
مُزيِّن لتنظيف متغيرات البيئة التي يضبطها accelerate والتي يحددها الصنف أو الدالة المُزيَّنة.
في بعض الحالات، قد يؤدي استدعاء فئات أو دوال معينة إلى تعيين متغيرات بيئة accelerate دون تنظيفها بعد ذلك. كمثال، عند استدعاء:
TrainingArguments(fp16=True, …)
سيتم تعيين متغير البيئة التالي:
ACCELERATE_MIXED_PRECISION=fp16
قد يؤثر ذلك على الأكواد اللاحقة، حيث أن متغير البيئة له الأولوية على TrainingArguments(fp16=False). وهذا الأمر ذو صلة خاصة باختبارات الوحدة، حيث نريد تجنب أن يكون للاختبارات الفردية آثار جانبية على بعضها البعض. زُيِّن دالة الاختبار الفردي أو الفئة بأكملها بهذا الزينة (decorator) للتأكد من أن متغيرات البيئة تُنظَّف بعد كل اختبار. ويعمل هذا مع كلا من unittest.TestCase والفئات العادية (pytest)؛ كما يعمل عند تزيين الفئة الأم.
الذاكرة
accelerate.find_executable_batch_size
< source >( 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 كحجته الأولى.
النمذجة
تتعلق هذه الأدوات بالتفاعل مع نماذج PyTorch
يُحسب الحجم الكلي للنموذج وأكبر طبقة فيه
accelerate.utils.compute_module_sizes
< source >( model: Moduledtype: str | torch.device | None = Nonespecial_dtypes: dict[str, str | torch.device] | None = Nonebuffers_only: bool = False )
احسب حجم كل وحدة فرعية من نموذج معين.
accelerate.utils.extract_model_from_parallel
< source >( 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
< 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 )
المعاملات
- 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
< source >( 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
< 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 )
المعاملات
- 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
< 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 )
المعاملات
- 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
< source >( modelindexoffload_folder )
يحمّل الأوزان من مجلد الإزاحة إلى النموذج.
accelerate.utils.load_state_dict
< source >( checkpoint_filedevice_map = None )
المعاملات
- checkpoint_file (
str) — مسار نقطة التفتيش التي سيتم تحميلها. - device_map (
Dict[str, Union[int, str, torch.device]], اختياري) — خريطة تحدد المكان الذي يجب أن يذهب إليه كل وحدة فرعية. لا حاجة إلى تفصيلها لكل اسم معلمة/مخزن، فبمجرد أن يكون اسم وحدة معينة داخلها، سيتم إرسال كل وحدة فرعية منها إلى نفس الجهاز.
تحميل نقطة تحقق من ملف معيّن. إذا كانت نقطة التحقق بصيغة safetensors وتم تمرير خريطة أجهزة، يمكن تحميل الأوزان بسرعة مباشرة على وحدة معالجة الرسوميات (GPU).
accelerate.utils.offload_state_dict
< source >( save_dir: str | os.PathLikestate_dict: dict )
تفريغ حالة القاموس (state dict) في مجلد محدد.
accelerate.utils.retie_parameters
< source >( modeltied_params )
يعيد ربط المعاملات المرتبطة في نموذج معيّن إذا كان الرابط قد انقطع (على سبيل المثال عند إضافة الخطافات).
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 )
المعاملات
- 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
< source >( model: Modulereturn_fqns: bool = False ) → list[torch.nn.Module]
Traverse النموذج بالترتيب من الأسفل إلى الأعلى وإرجاع الوحدات الفرعية بهذا الترتيب.
مواز
تشمل هذه الأدوات أدوات عامة يجب استخدامها عند العمل بالتوازي.
accelerate.utils.extract_model_from_parallel
< source >( 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
< source >( 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
< source >( fmap_location = None**kwargs )
بديل متوافق يمكن استخدامه مباشرةً بدلاً من torch.load()، يتيح استخدام weights_only إذا كانت إصدار torch هو 2.4.0 أو أحدث. وإلا سيتم تجاهل معامل الكلمة المفتاحية.
سيتم أيضًا إضافة (ثم إزالة) استثناء لمصفوفات numpy
يُدخل نقطة حجب في السكربت، مما يضمن وصول جميع العمليات إلى هذه النقطة قبل المتابعة.
تأكد من أن جميع العمليات ستصل إلى هذه التعليمات، وإلا فإن إحدى عملياتك ستعلق إلى الأبد.
عشوائي
تتعلق هذه الأدوات بإعداد جميع حالات العشوائية ومزامنتها.
accelerate.utils.set_seed
< source >( 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
< 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
تشمل هذه الأدوات دوال مساعدة مفيدة عند استخدام PyTorch مع XLA.
accelerate.utils.install_xla
< source >( upgrade: bool = False )
دالة مساعدة لتثبيت عجلات xla المناسبة بناءً على إصدار torch في Google Colaboratory.
تحميل أوزان النموذج
تشمل هذه الأدوات دوالاً مساعدة مفيدة لتحميل نقاط التفتيش.
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 )
المعاملات
- 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
< 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
المعاملات
- 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)،