tensor_placement_policy="auto"),
optimizer_config=dict(gpu_margin_mem_ratio=0.8))
第二步,是在配置文件准备好后,插入几行代码来启动新功能 。
首先,通过一行代码,使用配置文件来启动Colossal-AI 。
Colossal-AI会自动初始化分布式环境,读取相关配置,然后将配置里的功能自动注入到模型及优化器等组件中 。
colossalai.launch_from_torch(config='./configs/colossalai_zero.py')
然后,还是像往常一样定义数据集、模型、优化器、损失函数等 。
比如直接使用原生PyTorch代码,在定义模型时,只需将模型放置于ZeroInitContext下初始化即可 。
在这里,使用的是Hugging Face提供的OPTForCausalLM模型以及预训练权重,在Wikitext数据集上进行微调 。
with ZeroInitContext(target_device=torch.cuda.current_device(),
shard_strategy=shard_strategy,
shard_param=True):
model = OPTForCausalLM.from_pretrained(
'facebook/opt-1.3b'
config=config
接下来,只需要调用colossalai.initialize,便可将配置文件里定义的异构内存功能统一注入到训练引擎中,即可启动相应功能 。
engine, train_dataloader, eval_dataloader, lr_scheduler = colossalai.initialize(model=model,
optimizer=optimizer,
criterion=criterion,
train_dataloader=train_dataloader,
test_dataloader=eval_dataloader,
lr_scheduler=lr_scheduler)
还是得靠GPU+CPU异构
而能够让用户实现如上“傻瓜式”操作的关键,还是AI系统本身要足够聪明 。
发挥核心作用的是Colossal-AI系统的高效异构内存管理子系统Gemini 。
它就像是系统内的一个总管,在收集好计算所需的信息后,动态分配CPU、GPU的内存使用 。
具体工作原理,就是在前面几个step进行预热,收集PyTorch动态计算图中的内存消耗信息 。
在预热结束后,计算一个算子前,利用收集的内存使用记录,Gemini将预留出这个算子在计算设备上所需的峰值内存,并同时从GPU显存移动一些模型张量到CPU内存 。
- 1块GPU+几行代码,大模型训练提速40%!无缝支持HuggingFace
- 显卡|GPU-Z 2.47.0升级发布:假冒N卡无所遁形、优化国产显卡
- AMD|摩尔定律放缓AMD无奈:功耗700瓦的显卡要来了
- 真我gt2|国内显卡价格集体崩盘!有的已破发33%
- 显卡|win10系统删除自带应用软件步骤
- RTX 3090 Ti显卡狂清库存:雪崩降价5500元
- 显卡|显卡价格回归理性,现在买甜点显卡该选哪个?
- NVIDIA|RTX 3090 Ti显卡狂清库存:雪崩降价5500元
- “国内显卡价格现在总体暴跌|显卡价格暴跌,一波买家却表示还要等更低价
- 显卡|多款显卡被曝降至史低!网友顺手做了张全网显卡最低价格表