如何在服务器中成功部署大模型(Qwen3-14B-4bit)
部署如果只是用于简单推理或者使用webUI等这种前端去搭建RAG可以使用Ollama去下载拉取模型并运行run,配合docker可以很简单的部署并使用,由于我这里后续需要其他操作,所以使用魔搭modelscope下载然后在代码中利用接口调用部署的模型。echo 'export PATH="$PATH:/path/to/modelscope/bin"' >> ~/.bashrc# 替换为实际安装路径
部署如果只是用于简单推理或者使用webUI等这种前端去搭建RAG可以使用Ollama去下载拉取模型并运行run,配合docker可以很简单的部署并使用,由于我这里后续需要其他操作,所以使用魔搭modelscope下载然后在代码中利用接口调用部署的模型。
1、先下载魔搭社区,我们使用魔搭来拉取模型到本地。
pip install modelscope -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
2、若需全局使用,将ModelScope路径添加到~/.bashrc
echo 'export PATH="$PATH:/path/to/modelscope/bin"' >> ~/.bashrc # 替换为实际安装路径
source ~/.bashrc
3、下载模型(示例)
3.1这里没有指定目录下载:
modelscope download unsloth/Qwen3-14B-unsloth-bnb-4bit
若出现这报错就安装这个包 :pip install packaging
这样就开始成功安装了
注:如果没指定目录下载,后续使用mv命令移动到指定目录,如下所例:
mv ./home/liqianxi/Qwen3-14B-unsloth-bnb-4bit /liqianxi/model
即从./home/liqianxi/Qwen3-14B-unsloth-bnb-4bit这个文件夹移动到 /liqianxi/model这个文件夹。
3.2指定目录去下载使用如下命令
modelscope download --model 'Qwen3-32B' --local_dir '/path/to/save/model'
4、编写代码,调用下载好的模型,测试是否成功部署:
from transformers import AutoModelForCausalLM, AutoTokenizer
# 设置模型路径
model_path = "/home/liqianxi/models/Qwen3-14B-unsloth-bnb-4bit"
# 初始化tokenizer和model
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_path,
device_map="auto",
trust_remote_code=True
).eval()
def analyze_code(code: str):
"""
使用Qwen模型分析代码并直接打印结果
"""
# 构建提示词
prompt = f"""请分析以下代码的功能、输入输出、关键算法和可能的应用场景。按以下格式返回分析结果:
1. 功能概述:
2. 输入输出说明:
3. 关键算法/逻辑:
4. 应用场景:
5. 潜在改进点:
代码:
{code}
"""
# 使用模型生成分析结果
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=3000)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
# 打印结果
print("\n代码分析结果:")
print(response)
return response
# 测试代码样例
test_code = """
void BRepExtrema_ExtPF::Initialize(const TopoDS_Face& TheFace,
const Extrema_ExtFlag TheFlag,
const Extrema_ExtAlgo TheAlgo)
{
// cette surface doit etre en champ. Extrema ne fait
// pas de copie et prend seulement un pointeur dessus.
mySurf.Initialize(TheFace, Standard_False);
if (mySurf.GetType() == GeomAbs_OtherSurface)
return; // protect against non-geometric type (e.g. triangulation)
Standard_Real Tol = Min(BRep_Tool::Tolerance(TheFace), Precision::Confusion());
Standard_Real aTolU, aTolV;
aTolU = Max(mySurf.UResolution(Tol), Precision::PConfusion());
aTolV = Max(mySurf.VResolution(Tol), Precision::PConfusion());
Standard_Real U1, U2, V1, V2;
BRepTools::UVBounds(TheFace, U1, U2, V1, V2);
myExtPS.SetFlag(TheFlag);
myExtPS.SetAlgo(TheAlgo);
myExtPS.Initialize(mySurf, U1, U2, V1, V2, aTolU, aTolV);
}
"""
# 运行测试
print("开始分析代码...")
analysis_result = analyze_code(test_code)
print("\n分析完成!")
这里将这代码copy到一个文件中,如qwen_test.py文件,然后进入到这个文件夹下运行该代码:
python qwen_test.py
即可开始输出
更多推荐
所有评论(0)