LLaMA Factory 微调后,迁移模型

方法 1:使用 Hugging Face Hub(最推荐)

from transformers import AutoModelForCausalLM, AutoTokenizer

# 在源服务器上保存模型到 Hub
model.push_to_hub("your-username/your-model-name")
tokenizer.push_to_hub("your-username/your-model-name")

# 在目标服务器上下载模型
model = AutoModelForCausalLM.from_pretrained("your-username/your-model-name")
tokenizer = AutoTokenizer.from_pretrained("your-username/your-model-name")

步骤:

1.在源服务器登录 Hugging Face:

huggingface-cli login

2.在训练脚本中添加上传代码:

trainer.push_to_hub("your-username/your-model-name")

3.在目标服务器安装 transformers:

pip install transformers

4.下载模型:

from transformers import AutoModel, AutoTokenizer
model = AutoModel.from_pretrained("your-username/your-model-name")

方法 2:直接文件传输(适用于大型模型)

步骤:

1.在源服务器打包模型:

# 进入模型目录
cd /path/to/model

# 打包所有文件(包括隐藏文件)
tar -czvf model.tar.gz .

2.使用 SCP 传输:

scp model.tar.gz user@target-server:/path/to/destination

3.在目标服务器解压:

mkdir -p /path/to/model
tar -xzvf model.tar.gz -C /path/to/model

方法 3:使用 rsync(适合大型文件增量传输)

# 在源服务器执行
rsync -avz --progress -e ssh \
    /path/to/source/model/ \
    user@target-server:/path/to/destination/model/

方法 4:模型导出为单文件(简化传输)

# 在源服务器上
import torch

# 保存为单个 .bin 文件
torch.save(model.state_dict(), "model_weights.bin")

# 在目标服务器上加载
model = AutoModelForCausalLM.from_pretrained("base-model-name")
model.load_state_dict(torch.load("model_weights.bin"))

完整迁移脚本示例

# 源服务器:export_model.py
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

model = AutoModelForCausalLM.from_pretrained("/path/to/finetuned/model")
tokenizer = AutoTokenizer.from_pretrained("/path/to/finetuned/model")

# 方法1: 上传到Hub
model.push_to_hub("your-username/your-model-name")

# 方法2: 保存为单文件
torch.save(model.state_dict(), "model_weights.bin")
# 目标服务器:import_model.py
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

# 从Hub下载
model = AutoModelForCausalLM.from_pretrained("your-username/your-model-name")

# 或从单文件加载
base_model = AutoModelForCausalLM.from_pretrained("original-base-model")
base_model.load_state_dict(torch.load("model_weights.bin"))
model = base_model

迁移后验证步骤

1.模型完整性检查

print(f"Model architecture: {model.config}")
print(f"Model parameters: {sum(p.numel() for p in model.parameters()):,}")

2.推理测试

input_text = "什么是机器学习?"
inputs = tokenizer(input_text, return_tensors="pt")
outputs = model.generate(**inputs, max_length=50)
print(tokenizer.decode(outputs[0]))

注意事项

版本兼容性

确保源和目标服务器使用相同的:

  • Python 版本

  • PyTorch 版本

  • Transformers 版本

  • CUDA 版本(如果使用GPU)

你可能感兴趣的:(llama,llamafactory,人工智能,python)