如何设置config.init_device以结合Composer+FSDP实现模型快速初始化?
如何设置config.init_device以结合Composer+FSDP实现模型快速初始化?
嗨,我来帮你搞定这个问题~其实设置config.init_device="meta"的方式很简单,主要有两种常用路径,我给你一步步说明:
方法一:先修改模型配置再加载模型
你可以先单独加载模型的配置文件,手动修改init_device参数,再用修改后的配置去加载模型。代码示例如下:from transformers import AutoConfig, AutoTokenizer, AutoModelForCausalLM # 第一步:加载目标模型的配置 config = AutoConfig.from_pretrained(model_name) # 第二步:把init_device改成"meta" config.init_device = "meta" # 第三步:用修改后的配置加载tokenizer和模型 tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.from_pretrained( model_name, config=config, trust_remote_code=True )方法二:直接在加载模型时指定参数(部分模型支持)
有些模型支持在from_pretrained方法里直接传入init_device参数,你也可以试试这种更简洁的写法:tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.from_pretrained( model_name, init_device="meta", trust_remote_code=True )
简单解释下为啥要这么设置:init_device="meta"会让模型用延迟参数初始化的方式启动,不会一开始就把所有模型参数加载到CPU内存里,再配合Composer和FSDP的分布式训练框架,就能大幅加快大模型的初始化速度,还能节省内存资源~
备注:内容来源于stack exchange,提问作者zoomraider
相关产品推荐
相关产品推荐

