https://github.com/xinyuwei-david/david-share.git下的:
Deep-Learning/Pytorch-PEFT-to-ONNX
ONNX(开放神经网络交换,Open Neural Network Exchange)是一个开放的格式,用于表示机器学习和深度学习模型。它由微软和Facebook在2017年推出,旨在促进不同深度学习框架之间的模型互操作性。通过ONNX,你可以在如PyTorch、TensorFlow等不同的深度学习框架之间无缝转换模型。
目前ONNX的微调可以使用Olive,但还不支持LoRA。如果想Pytorch进行LoRA微调,还想使用ORT进行推理,如何实现呢?
1.先使用LoRA对模型微调。不要使用QLoRA,否则后续合并精度损失会比较大。
2.将Adapter与Pytorch基础模型进行合并。
3.将合并后的safetensorers转化为ONNX。
4.通过ONNX Runtime GenAI Model Builder生成genai_config.json文件。
5.通过onnxruntime-genai进行推理。
详细代码不再赘述,参见repo。这里展示关键步骤。本Demo使用Phi3.5-mini进行微调。
Merge adapter:
合并结果:
Export to ONNX:
转化结果:
生成genai_config.json。在进行转换的时候,需要使用FP32。
推理需要的文件:
使用ONNX进行推理:
问题: 9.11和9.2这两个数字谁更大?
Output: 9.11和9.2这两个小数中,9.2是更大的。在这两个小数中,9.2有一个数字在小数点后,而9.11只有一个数字。因此,9.2是更大的。