Shortcuts

hfai

幻方萤火深度学习套件 hfai 提供了 训练加速环境管理萤火调度 三类核心接口与命令行工具,以此加速用户本地的训练,打通用户个人主机与萤火二号集群。

hfai.nn

to_hfai

将模型中 torch 算子替换成 hfai 优化算子

to_torch

将 model 中 hfai 算子替换成 torch 的算子

bench

给定一个模型或函数和它的输入,对 forward 和 backward 进行计时。

compare

比较两个模型或函数的性能。

LSTM

高效的 LSTM 算子

LSTM_fullc

高效的 LSTM 算子,并输出完整的 c

GRU

高效的 GRU 算子

LayerNorm

更高效的LayerNorm算子

MultiheadAttention

更高效的MultiheadAttention算子

Dropout

压位 Dropout 算子, 训练时的 mask 用 1bit 储存, 以节省训练时的内存

Hardtanh

压位 Hardtanh 算子, 训练时的中间结果用 1bit 储存 [min_val <= x <= max_val], 以节省训练时的内存

LogSoftmax

LogSoftmax 算子, 与 torch 相比, 不用在训练中保存 input, 节省一倍内存

Softmax

Softmax 算子, 与 torch 相比, 不用在训练中保存 input, 节省一倍内存

Softmax2d

Softmax2d 算子, 与 torch 相比, 不用在训练中保存 input, 节省一倍内存

Softmin

Softmin 算子, 与 torch 相比, 不用在训练中保存 input, 节省一倍内存

Softplus

Softplus 算子, 与 torch 相比, 不用在训练中保存 output, 节省一倍内存

ReLU

压位 ReLU 算子, 训练时的中间结果用 1bit 储存 [x >= 0], 以节省训练时的内存

ReLU6

压位 ReLU6 算子, 训练时的中间结果用 1bit 储存 [0 <= x <= 6], 以节省训练时的内存

Threshold

压位 Threshold 算子, 训练时的中间结果用 1bit 储存 [x > threshold], 以节省训练时的内存

LeakyReLU

压位 LeakyReLU 算子, 训练时的中间结果用 1bit 储存 [x >= 0], 以节省训练时的内存

RReLU

压位 RReLU 算子, 训练时的中间结果用 1bit 储存 [x >= 0], 以节省训练时的内存

Hardsigmoid

压位 Hardsigmoid 算子, 训练时的中间结果用 1bit 储存 [-3 <= x <= 3], 以节省训练时的内存

Hardshrink

压位 Hardshrink 算子, 训练时的中间结果用 1bit 储存 [-lambda <= x <= lambda], 以节省训练时的内存

Softshrink

压位 Softshrink 算子, 训练时的中间结果用 1bit 储存 [-lambda <= x <= lambda], 以节省训练时的内存

hfai.nn.functional

set_replace_torch

把所有 hfai 优化过的 torch.nn.functional 和 torch 中的函数转换为 hfai.nn.functional 的对应函数.

dropout

dropout 函数, 参考 Dropout

hardtanh

hardtanh 函数, 参考 Hardtanh

hardtanh_

原地操作的 hardtanh 函数, 参考 Hardtanh

log_softmax

log_softmax 函数, 参考 LogSoftmax

softmax

softmax 函数, 参考 Softmax

softmin

softmin 函数, 参考 Softmin

softplus

softplus 函数, 参考 Softplus

sync

allgather 输入的 tensor 并沿着指定的维度拼接在一起,支持 autograd,backward 的时候梯度会传回去

relu

relu 函数, 参考 ReLU

relu_

原地操作的 relu 函数, 参考 ReLU

relu6

relu6 函数, 参考 ReLU6

threshold

threshold 函数, 参考 Threshold

threshold_

原地操作的 threshold 函数, 参考 Threshold

leaky_relu

leaky_relu 函数, 参考 LeakyReLU

leaky_relu_

原地操作的 leaky_relu 函数

rrelu

rrelu 函数, 参考 RReLU

rrelu_

原地操作的 rrelu 函数

hardsigmoid

hardsigmoid 函数, 参考 Hardsigmoid

hardshrink

hardshrink 函数, 参考 Hardshrink

softshrink

softshrink 函数, 参考 Softshrink

abs

压位 abs 函数, 用法与 func:torch.abs 一致

abs_

原地操作的 abs

minimum

压位 minimum 函数, 用法与 func:torch.minimum 一致

maximum

压位 maximum 函数, 用法与 func:torch.maximum 一致

min

压位 min 算子, 返回 input 和 min 中的较大值 若 value 是 Tensor, 调用 hf_F.minimum(input, value) 若 value 是 float, 调用 hf_F.clamp(input, max=value) 若 value 是 int, 或者 dim 或 keepdim 不为 None, 调用 torch.min(input, dim=value or dim, keepdim=keepdim)

max

压位 max 算子, 返回 input 和 max 中的较大值 若 value 是 Tensor, 调用 hf_F.maximum(input, value) 若 value 是 float, 调用 hf_F.clamp(input, min=value) 若 value 是 int, 或者 dim 或 keepdim 不为 None, 调用 torch.max(input, dim=value or dim, keepdim=keepdim)

clip

clip 函数, 参考 hfai.nn.functional.clamp()

clip_

原地操作的 clip 函数

clamp

压位 clamp 算子, 训练时的中间结果用 1bit 储存 [min <= x <= max], 以节省训练时的内存

clamp_

原地操作的 clamp 函数

clamp_max

压位 clamp_max 算子, 训练时的中间结果用 1bit 储存 [x <= max], 以节省训练时的内存

clamp_max_

原地操作的 clamp_max 函数

clamp_min

压位 clamp_min 算子, 训练时的中间结果用 1bit 储存 [x >= min], 以节省训练时的内存

clamp_min_

原地操作的 clamp_min 函数

where

压位 where 函数, 用法与 func:torch.where 一致

masked_fill

压位 masked_fill 函数, 用法与 func:torch.masked_fill 一致

masked_fill_

原地操作的压位 masked_fill 函数

masked_select

节省显存的 masked_select 函数, 用法与 func:torch.masked_select 一致

masked_scatter

节省显存的 masked_scatter 函数, 用法与 func:torch.masked_scatter 一致

masked_scatter_

原地操作的节省显存的 masked_scatter 函数

scan

用给定函数在数据上扫描 (类似 RNN), 并在相邻的阶段间传递隐藏状态 hidden

associative_scan

用满足结合律的二元运算函数在数据上扫描 (类似前缀和), 并行执行

hfai.datasets

BaseDataset

hfai.dataset 基类

set_data_dir

设置数据集存放的主目录

get_data_dir

返回当前数据集主目录

download

下载数据集

ADE20k

这是一个语义分割的公开数据集

AlphafoldData

这是一个用于Alphafold训练的蛋白质预测数据集

CIFAR10

这是一个用于识别普适物体的小型数据集

CIFAR100

这是一个用于识别普适物体的大型数据集

CLUEForCLS

这是用于用于文本分类的 CLUE 数据集。

CLUEForMLM

这是一个用于掩蔽语言模型预训练的CLUE数据集

CocoCaption

这是一个用于图像说明的 COCO 数据集

CocoDetection

这是一个用于目标检测的 COCO 数据集

CocoKeypoint

这是一个用于关键点检测的COCO数据集

CocoPanoptic

这是一个用于全景分割的 COCO 数据集

ERA5

这是一个0.25°高分辨率的全球基础气象指标预报数据集

GoogleConceptualCaption

这是一个用于多模态训练的数据集

ImageNet

这是一个图像识别数据集

ImageNet21K

这是一个图像识别数据集

ImageNet1K

这是一个图像识别数据集

ISC2021

这是一个无监督学习的数据集

KITTIObject2D

这是一个目标检测数据集

LJSpeech

这是一个用于语音识别的数据集

LTSF

这是一个用于长时序预测的时间序列数据集

NuScenes

这是一个用于自动驾驶任务的 NuScenes 数据集

OGB

这是一个用于图机器学习的基准数据集

WeatherBench

这是一个用于天气预报的基准数据集

hfai.distributed

init_process_group

功能与 torch.distributed.init_process_group 类似

barrier

功能与 torch.distributed.barrier 类似

gather

功能与 torch.distributed.gather 类似

broadcast

基于 zmq 提供的 broadcast,与 torch 提供的 broadcast 相比暂不支持 async_op 与 group 参数

all_gather

功能与 torch.distributed.all_gather 一样,但支持不同大小的 tensor。

reduce_scatter

功能与 torch.distributed.reduce_scatter 一样,但支持不同大小的 tensor。

set_nccl_opt_level

设置萤火2号集群NCCL优化等级和自定义配置

pairwise_apply

给定一个函数 f 和当前(第 i 个)GPU 的输入 x_i,返回 [f(x_i, y_j) for j in range(nranks)], 其中 x_j 为第 j 个 GPU 的输入

hfai.multiprocessing

Process

多进程管理

spawn

功能和 torch.multiprocessing.spawn 类似,但支持自动绑定 NUMA

fork

功能和 spawn() 一样,但是用 fork 的方式启动子进程。

hfai.checkpoint

init

从给定的 checkpoint 中加载 model, optimizer, scheduler 等对象的状态。

load

加载通过 hfai.checkpoint.save 保存的 checkpoint

save

该函数把 checkpoint 切分成多份,每个 rank 保存一份数据,从而加快保存 checkpoint 的速度。

hfai.cuda

pin_memory

使用 cuda 内置函数, 把符合 Buffer Protocol 的对象放入锁页内存

unpin_memory

使用 cuda 内置函数, 将已放入锁页内存的对象解除锁页

hfai.utils

which_numa

根据 gpu 编号或者 ib 编号得到对应的 numa

num_gpus

返回可用的 GPU 个数

profile_memory

分析模型的显存占用情况

bind_numa

绑定当前进程到指定的 NUMA 节点

get_current_numa

返回当前进程所在的 NUMA 编号

timeout

给函数设置超时限制

hfai.utils.{mm, detr2}

mm.FFRecordClient

为 mmcv 提供的 FFRecord 文件格式的存储后端

detr2.register_ffrecord_handler

在 detectron2 上使用 FFRecord,需要在导入 detectron2 包之前使用本函数

hfai.autotune

run

按给定超参组合发起训练任务

run_grid_search

进行超参数网格搜索

get_args

在训练代码中获取超参数

report

在训练代码中汇报训练结果

show_result

在训练完成后统计训练结果

set_debug_mode

将autotune设置为debug模式

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

hfai.file

read_file

通过 O_DIRECT 直接读取文件

read_file_as_bytesio

通过 O_DIRECT 直接读取文件

hfai.client

set_watchdog_time

设置任务超时时间,规定时间内无 log 该任务会被认为已失败,默认为 1800 秒

set_whole_life_state

设置 whole_life_state

get_whole_life_state

获取当前 chain_id 的上一个 id 任务留下来的 whole_life_state

receive_suspend_command

获取该任务是否即将被打断

go_suspend

通知 server 该任务可以被打断

EXP_PRIORITY

set_priority

设置当前任务的优先级,注意如果你没有该优先级的权限可能会导致任务被立刻打断

create_experiment_v2

根据 v2 配置文件创建任务

bind_hf_except_hook

该函数用于将 Process 类绑定异常 hook,在子进程发生异常时通知 server 将其强行关闭,并启动自我检查,发现硬件故障重启该任务

get_experiment

通过 name、id 或 chain_id 获取训练任务,不能都为空,只能获取自己的任务

get_experiments

获取自己最近提交的任务

self_health_check

对当前机器做系统检查,检查通过会退出该任务,检查失败会重启该任务 :param pid: :return:

Experiment

任务类

hfai.client.remote

GlobalSession

远程运行的Session

SessionConfig

配置Session,本地还是远程,远程用哪个分组