Shortcuts

hfai.pl

ModelCheckpointHF

这是一个可以自动处理 Hfai 打断信号,自动挂起任务的 checkpoint 回调函数管理类, 支持 1.6.0 <= pytorch_lightning.__version__ <= 1.7.6

HFAIEnvironment

这是一个可以自动适配到 Hfai 萤火集群的环境类, 支持 1.5.0 <= pytorch_lightning.__version__ <= 1.7.6

DDPStrategyBindNuma

这是一个可以绑定 numa 的 ddp strategy, 支持 1.6.0 <= pytorch_lightning.__version__ <= 1.7.6

DDPSpawnStrategyBindNuma

这是一个可以绑定 numa 的 ddp spawn strategy, 支持 1.6.0 <= pytorch_lightning.__version__ <= 1.7.6

HFReduceStrategyBindNuma

这是一个可以绑定 numa、使用 hfreduce 的 ddp strategy, 支持 1.6.0 <= pytorch_lightning.__version__ <= 1.7.6

HFReduceSpawnStrategyBindNuma

这是一个可以绑定 numa、使用 hfreduce 的 ddp spawn strategy, 支持 1.6.0 <= pytorch_lightning.__version__ <= 1.7.6

nn_to_hfai

这是一个将算子转换为 hfai 算子的函数, 支持 1.5.0 <= pytorch_lightning.__version__ <= 1.7.6

class hfai.pl.ModelCheckpointHF(dirpath=None, filename=None, monitor=None, verbose=False, save_last=None, save_top_k=1, save_weights_only=False, mode='min', auto_insert_metric_name=True, every_n_train_steps=None, train_time_interval=None, every_n_epochs=None, save_on_train_epoch_end=None)[source]

这是一个可以自动处理 Hfai 打断信号,自动挂起任务的 checkpoint 回调函数管理类, 支持 1.6.0 <= pytorch_lightning.__version__ <= 1.7.6

Parameters
  • dirpath (str) – 模型文件的保存目录(默认为 None

  • filename (str) – 模型文件的保存名称,例如 {epoch}-{val_loss:.2f}-{other_metric:.2f}``(默认为 ``None

  • monitor (str) – 监测的指标名称(默认为 None

  • verbose (bool) – 输出状态(默认为 False

  • save_last (bool) – 是否保存最后一个模型文件(默认为 None

  • save_top_k (int) – 保存前 k 好的模型文件,k0 时不保存,k-1 时保存所有模型文件(默认为 1

  • save_weights_only (bool) – 是否仅保存模型的权重(默认为 False

  • mode (str) – 指标的排序方式,包括:从大到小(max)或者从小到大(min),(默认为 min

  • auto_insert_metric_name (bool) – 是否在模型名称上自动插入指标的数值(默认为 True

  • every_n_train_steps (int) – 保存模型文件的训练间隔 step 数量(默认为 None),不能和 train_time_intervalevery_n_epochs 一同使用

  • train_time_interval (timedelta) – 保存模型文件的训练间隔时间(默认为 None),不能和 every_n_train_stepsevery_n_epochs 一同使用

  • every_n_epochs (int) – 保存模型文件的训练间隔 epoch 数量(默认为 None),不能和 every_n_train_stepstrain_time_interval 一同使用

  • save_on_train_epoch_end (bool) – 是否在训练 epoch 时保存模型文件(默认为 None

Raises
  • MisconfigurationException – 如果 save_top_k-1``小     如果 ``monitor 不是 None 同时 save_top_k 不是 None-10 如果 mode 不是 "min" 或者 "max"

  • ValueError – 如果 trainer.save_checkpointNone

Examples:

from hfai.pl import ModelCheckpointHF

output_dir = 'hfai_out'
checkpoint_callback = ModelCheckpointHF(dirpath=output_dir) # 第一步:定义 checkpoint_callback
trainer = pytorch_lightning.Trainer(
    max_epochs=3,
    gpus=8,
    strategy="ddp_bind_numa", # hfai 支持 ddp_bind_numa, ddp_spawn_bind_numa, hfreduce_bind_numa, hfreduce_spawn_bind_numa
    plugins=[HFAIEnvironment()],
    callbacks=[checkpoint_callback] # 第二步:将 checkpoint_callback 输入到 trainer
)

model_module = ToyNetModule()

hfai_suspend_ckpt_path = f'{output_dir}/{checkpoint_callback.CHECKPOINT_NAME_SUSPEND}.ckpt'
hfai_suspend_ckpt_path = hfai_suspend_ckpt_path if os.path.exists(hfai_suspend_ckpt_path) else None

trainer.fit(
    model_module,
    ckpt_path=hfai_suspend_ckpt_path # 第三步:重启后载入打断前的最新模型
)
class hfai.pl.HFAIEnvironment[source]

这是一个可以自动适配到 Hfai 萤火集群的环境类, 支持 1.5.0 <= pytorch_lightning.__version__ <= 1.7.6

Examples:

from hfai.pl import HFAIEnvironment

trainer = pytorch_lightning.Trainer(
    max_epochs=3,
    gpus=8,
    strategy="ddp_bind_numa", # hfai 支持 ddp_bind_numa, ddp_spawn_bind_numa, hfreduce_bind_numa, hfreduce_spawn_bind_numa
    plugins=[HFAIEnvironment()] # 定义 Hfai 环境并作为插件输入
)

model_module = ToyNetModule()

trainer.fit(
    model_module
)
class hfai.pl.DDPStrategyBindNuma(accelerator=None, parallel_devices=None, cluster_environment=None, checkpoint_io=None, precision_plugin=None, ddp_comm_state=None, ddp_comm_hook=None, ddp_comm_wrapper=None, model_averaging_period=None, process_group_backend=None, timeout=datetime.timedelta(seconds=1800), **kwargs)[source]

这是一个可以绑定 numa 的 ddp strategy, 支持 1.6.0 <= pytorch_lightning.__version__ <= 1.7.6

Examples:

from hfai.pl import HFAIEnvironment

trainer = pytorch_lightning.Trainer(
    max_epochs=3,
    gpus=8,
    strategy="ddp_bind_numa", # hfai 支持 ddp_bind_numa, ddp_spawn_bind_numa, hfreduce_bind_numa, hfreduce_spawn_bind_numa
    plugins=[HFAIEnvironment()] # 定义 Hfai 环境并作为插件输入
)

model_module = ToyNetModule()

trainer.fit(
    model_module
)
class hfai.pl.DDPSpawnStrategyBindNuma(accelerator=None, parallel_devices=None, cluster_environment=None, checkpoint_io=None, precision_plugin=None, ddp_comm_state=None, ddp_comm_hook=None, ddp_comm_wrapper=None, process_group_backend=None, timeout=datetime.timedelta(seconds=1800), start_method='spawn', **kwargs)[source]

这是一个可以绑定 numa 的 ddp spawn strategy, 支持 1.6.0 <= pytorch_lightning.__version__ <= 1.7.6

Examples:

from hfai.pl import HFAIEnvironment

trainer = pytorch_lightning.Trainer(
    max_epochs=3,
    gpus=8,
    strategy="ddp_spawn_bind_numa", # hfai 支持 ddp_bind_numa, ddp_spawn_bind_numa, hfreduce_bind_numa, hfreduce_spawn_bind_numa
    plugins=[HFAIEnvironment()] # 定义 Hfai 环境并作为插件输入
)

model_module = ToyNetModule()

trainer.fit(
    model_module
)
class hfai.pl.HFReduceStrategyBindNuma(accelerator=None, parallel_devices=None, cluster_environment=None, checkpoint_io=None, precision_plugin=None, ddp_comm_state=None, ddp_comm_hook=None, ddp_comm_wrapper=None, model_averaging_period=None, process_group_backend=None, timeout=datetime.timedelta(seconds=1800), **kwargs)[source]

这是一个可以绑定 numa、使用 hfreduce 的 ddp strategy, 支持 1.6.0 <= pytorch_lightning.__version__ <= 1.7.6

Examples:

from hfai.pl import HFAIEnvironment

trainer = pytorch_lightning.Trainer(
    max_epochs=3,
    gpus=8,
    strategy="hfreduce_bind_numa", # hfai 支持 ddp_bind_numa, ddp_spawn_bind_numa, hfreduce_bind_numa, hfreduce_spawn_bind_numa
    plugins=[HFAIEnvironment()] # 定义 Hfai 环境并作为插件输入
)

model_module = ToyNetModule()

trainer.fit(
    model_module
)
class hfai.pl.HFReduceSpawnStrategyBindNuma(accelerator=None, parallel_devices=None, cluster_environment=None, checkpoint_io=None, precision_plugin=None, ddp_comm_state=None, ddp_comm_hook=None, ddp_comm_wrapper=None, process_group_backend=None, timeout=datetime.timedelta(seconds=1800), start_method='spawn', **kwargs)[source]

这是一个可以绑定 numa、使用 hfreduce 的 ddp spawn strategy, 支持 1.6.0 <= pytorch_lightning.__version__ <= 1.7.6

Examples:

from hfai.pl import HFAIEnvironment

trainer = pytorch_lightning.Trainer(
    max_epochs=3,
    gpus=8,
    strategy="hfreduce_spawn_bind_numa", # hfai 支持 ddp_bind_numa, ddp_spawn_bind_numa, hfreduce_bind_numa, hfreduce_spawn_bind_numa
    plugins=[HFAIEnvironment()] # 定义 Hfai 环境并作为插件输入
)

model_module = ToyNetModule()

trainer.fit(
    model_module
)
hfai.pl.nn_to_hfai(lightningmodule)[source]

这是一个将算子转换为 hfai 算子的函数, 支持 1.5.0 <= pytorch_lightning.__version__ <= 1.7.6

Parameters

lightningmodule (pytorch_lightning.LightningModule) – 用于训练的 pytorch_lightning 模型类

Returns

算子转换为 hfai 算子后的 pytorch_lightning 模型类

Return type

lightningmodule (pytorch_lightning.LightningModule)

from hfai.pl import nn_to_hfai

trainer = pytorch_lightning.Trainer(
    max_epochs=3,
    gpus=8,
    strategy="ddp_bind_numa", # hfai 支持 ddp_bind_numa, ddp_spawn_bind_numa, hfreduce_bind_numa, hfreduce_spawn_bind_numa
    plugins=[HFAIEnvironment()] # 定义 Hfai 环境并作为插件输入
)

model_module = nn_to_hfai(ToyNetModule()) # 将算子转换为 hfai 算子

trainer.fit(
    model_module
)