Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

使用torch-npu更改代码进行训练,得出的lora权重无法进行推演 #631

Open
ChjxL opened this issue Aug 19, 2024 · 6 comments
Assignees
Labels
bug Something isn't working

Comments

@ChjxL
Copy link

ChjxL commented Aug 19, 2024

Hardware Environment | 硬件环境

Ascend 910B1

Software Environment | 软件环境

  • MindSpore version: 2.20
  • Python version:3.9.18
  • OS EulerOS 2.0
  • GCC/Compiler version:7.3.0

Related log / screenshot | 完整日志

192c942db6198d3d6ac2db29d1a0cec

Describe the expected behavior | 期望输出

模型可以正常推演

Steps to reproduce the issue | 复现报错的步骤

1.我们使用了https://github.com/kohya-ss/sd-scripts 这个训练代码,然后在train_network.py这个脚本里面导入了咱们的脚本转换库: from torch_npu.contrib import transfer_to_npu
2.执行如下命令进行lora的训练
accelerate launch --num_cpu_threads_per_process 1  train_network.py --pretrained_model_name_or_path=/home/ma-user/work/train_lora/ckpt/majicMIXV7.safetensors --dataset_config=/home/ma-user/work/train_lora/dataset/10_wgdz/data.toml  --output_dir=/home/ma-user/work/train_lora/dataset/10_wgdz/out   --output_name=wgdz --save_model_as=ckpt --learning_rate=1e-4 --optimizer_type="Lion" --lr_scheduler=cosine_with_restarts  --network_module=networks.lora --network_dim=64 --network_alpha=64 --max_train_steps=1200
3.训练没问题,可以正常完成,然后得到了一个ckpt的权重文件
4.拿这个权重文件进行推理,到mindone/examples/stable_diffusion_v2下执行推理命令: python text_to_image.py
        --prompt "wgdz"
        --n_iter 1
        --n_samples 2
        --use_lora True
        --lora_ckpt_path /home/ma-user/work/train_lora/ckpt/wgdz.ckpt
        -v 1.5
结果报错了,具体的错误信息如下:
image

Special notes for this issue | 其他信息

模型文件权限正常,不是权限导致的问题
d158a1a5e13f9f9954858c8f362332b
65951ee5d249c25cbccefe1b9189acf

@ChjxL ChjxL added the bug Something isn't working label Aug 19, 2024
@SamitHuang
Copy link
Collaborator

SamitHuang commented Aug 28, 2024

Hi @ChjxL 这个报错一般是权重有损,或者权重文件与mindspore checkpoint格式不一致导致。对于您的情况,后者的可能性更大。torch+npu训练后的权重格式与mindspore并不相同,需要将torch ckpt转换成ms模型对应格式才可以。

请参考https://github.com/SamitHuang/mindone/blob/master/examples/stable_diffusion_v2/tools/model_conversion/README.md

python tools/model_conversion/convert_weights.py \
--source PATH_TO_TORCH.pth \
--target PATH_TO_SAVE_MS.ckpt \
--model sdv1 \
--source_version pt

@ChjxL
Copy link
Author

ChjxL commented Aug 29, 2024

Hi @ChjxL 这个报错一般是权重有损,或者权重文件与mindspore checkpoint格式不一致导致。对于您的情况,后者的可能性更大。torch+npu训练后的权重格式与mindspore并不相同,需要将torch ckpt转换成ms模型对应格式才可以。

请参考https://github.com/SamitHuang/mindone/blob/master/examples/stable_diffusion_v2/tools/model_conversion/README.md

python tools/model_conversion/convert_weights.py \
--source PATH_TO_TORCH.pth \
--target PATH_TO_SAVE_MS.ckpt \
--model sdv1 \
--source_version pt

你好,非常感谢您的回复,根据您提供的方案进行了尝试,我将得出来的权重模型进行转换后再进行推理,最终还是报错,报错信息如下:
d97ec1ba8ef805a8fb18fd17339909f
请问这是什么问题呢,盼回复。

@SamitHuang
Copy link
Collaborator

fixed in #644
可以再试试

@ChjxL
Copy link
Author

ChjxL commented Aug 29, 2024

fixed in #644 可以再试试

你好,重新拉了代码再试了一下,还是报错,这次的报错内容如下:
image

@vigo999
Copy link
Contributor

vigo999 commented Sep 3, 2024

您这边是什么场景?用torch npu训练。然后转mindspore推理?
是否可以直接用mindspore训练。或者用torch nvidia训练,再转mindspore + ascend平台。

@ChjxL
Copy link
Author

ChjxL commented Sep 4, 2024

您这边是什么场景?用torch npu训练。然后转mindspore推理? 是否可以直接用mindspore训练。或者用torch nvidia训练,再转mindspore + ascend平台。

您好,我主要适用于扩散模型的训练;我尝试过直接用mindspore训练,但是觉得效果不够好,所以尝试用torch npu 训练看看能不能获得更好的效果,最终用mindspore进行推理,但是没成功;也试过用nvidia训练,但是训练的lora无法通过脚本转换成ms的格式。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants