ModelScope中,自己拉起的训练,pytorch_lora_weights.bin 这个文件怎么转成sd的可直接导入的lora文件呢?
ModelScope 提供了一种便捷的方法,将 PyTorch 生成的 *.bin 文件转换成 ONNX 格式模型以便在 Android 上运行。以下是具体的操作流程:
首先,确保您已经安装了所需的环境,包括 Tensorflow 和 ONNX 工具箱,并且 TensorFlow 和 ONNX 都可以正确地运行。
pip install tensorflow-onnx
在 Python 环境中,使用以下代码将 PyTorch 模型转换为 ONNX 格式:
import torch.onnx as onnx
# 加载 PyTorch 模型
model = torch.load("pytorch_model.pt")
# 将模型导出为 ONNX 格式
input_names = ["input"]
output_names = ["output"]
dummy_input = torch.randn(1, 3, 128, 128)
onnx_file_path = "model.onnx"
torch.onnx.export(model, dummy_input, onnx_file_path,
input_names=input_names, output_names=output_names,
opset_version=10)
这将会导出一个名为 model.onnx 的文件。
然后,您可以利用 ModelScope 工具将 ONNX 文件转换成 SD 格式文件:
ms convert --framework=onnx --inference-model=model.onnx --out-format=sdk sd://model_name
这将会将模型转换成 SDK 格式。
目前,将pytorch_lora_weights.bin文件转换为SD可直接导入的lora文件并没有直接的方法。因为Diffusers库的Lora权重文件格式为:checkpoint-1000 checkpoint-200 checkpoint-400 checkpoint-600 checkpoint-800 pytorch_lora_weights.bin,而SD WebUI并不支持这种格式。
不过,有一种间接的方式可以尝试。首先,你需要将pytorch_lora_weights.bin转换为safetensors格式,可以使用"convert_lora_safetensor_to_diffusers.py"这个脚本。然后,你需要将转换后的safetensors文件加载到Hugging Face模型中,这个过程可以通过"hf_hub_download"和"torch.load"函数实现。最后,你可以将这个模型转换为SD WebUI支持的格式。