OpenMOSS / MOSS

An open-source tool-augmented conversational language model from Fudan University
https://txsun1997.github.io/blogs/moss.html
Apache License 2.0
11.9k stars 1.14k forks source link

请问微调完的checkpoint怎么加载 #314

Closed KickyGong closed 1 year ago

KickyGong commented 1 year ago

我在4张A100上完成了微调,训练结果保存成了.pt格式的文件。现在我想加载这些checkpoints,于是把load_checkpoint_and_dispatch()里的model_path改成了我的checkpoints所在文件夹,并且根据accelerate官方文档的要求在这个文件夹里添加了一个.index.json文件,里面写了数字序号与.pt文件的对应关系。但是这样运行代码之后报错ValueError: module doesn't have any device set.。请问有人遇到过这个问题吗?怎样才能正确地加载checkpoints呢?

cjrzh commented 1 year ago

同问。另外.index.json怎么写

KickyGong commented 1 year ago

同问。另外.index.json怎么写

我写的是这样的格式:

{"0":"(checkpoint0的名字).pt",
"1":"(checkpoint1的名字).pt",...}
KickyGong commented 1 year ago

同问。另外.index.json怎么写

我在已关闭的问题里找到了别人的解决方案https://github.com/OpenLMLab/MOSS/issues/18 但是我用这个方法操作之后,可以load并继续训练,但推理的时候报错where expected condition to be a boolean tensor, but got a tensor with dtype Half。或许你可以试试这个方法然后看看能否推理?希望能继续交流进展

usun1997 commented 1 year ago

同问。另外.index.json怎么写

我在已关闭的问题里找到了别人的解决方案#18 但是我用这个方法操作之后,可以load并继续训练,但推理的时候报错where expected condition to be a boolean tensor, but got a tensor with dtype Half。或许你可以试试这个方法然后看看能否推理?希望能继续交流进展

同样卡在where expected condition to be a boolean tensor, but got a tensor with dtype Half 这一步了,人傻了。用zero_to_fp32.py 将checkpoint .pt文件转换成了一个60多GB的pytorch_model.bin,然后在pytorch_model.bin.index 将所有的模型名称改成了pytorch_model.bin, 运行推理的时候报同样的错误

KickyGong commented 1 year ago

我解决了……还是参考上面那个#18 里给出的deepspeed官方文档,文档里面说使用zero stage3有两种保存模型的方法。moss给的finetune代码里是使用的第二种,这种可以把checkpoint读出来继续训练;如果想保存为可以推断的模型的话得使用第一种方法保存模型。所以用第二种方法把checkpoint读取出来,再用第一种方法保存,就可以推理了。

mayurou commented 1 year ago

我解决了……还是参考上面那个#18 里给出的deepspeed官方文档,文档里面说使用zero stage3有两种保存模型的方法。moss给的finetune代码里是使用的第二种,这种可以把checkpoint读出来继续训练;如果想保存为可以推断的模型的话得使用第一种方法保存模型。所以用第二种方法把checkpoint读取出来,再用第一种方法保存,就可以推理了。

请问能给一些具体操作步骤吗?我运行微调后产生的zero_to_fp32.py文件,生成了一个60多g的pytorch_model.bin文件,之后要如何才能成功推理呢?

KickyGong commented 1 year ago

你看一下#18里提到的官方文档,具体要用什么代码、要设置什么参数那里面都写得挺清楚的

mayurou commented 1 year ago

你看一下#18里提到的官方文档,具体要用什么代码、要设置什么参数那里面都写得挺清楚的

感谢,从官方文档里找到了具体描述,一会我试一下

截屏2023-06-07 上午10 31 08