服务器部署本地大模型
介绍
将大模型部署到服务器上,这是一种常见的方式,部署之前请检查一下服务器内存和模型加载内存是否符合,接下来,我们将介绍两种最常用的模型下载方式,分别是从huggingface和modelscope两个平台下载。
HuggingFace(国际主流)
python
from huggingface_hub import snapshot_download
from transformers import file_utils
import os
# 设置缓存路径(可选,仅影响 from_pretrained 等方法)
file_utils.default_cache_path = "/你的缓存地址,用于从网页中下载模型"
# 指定下载到 /data1 的绝对路径
repo_id = "Qwen/模型版本号"
local_dir = "/模型下载存储的绝对地址"
# 确保目录存在
os.makedirs(local_dir, exist_ok=True)
# 下载模型
snapshot_download(
repo_id=repo_id,
local_dir=local_dir,
force_download=True
)
print(f"模型已保存至:{local_dir}")
想要利用huggingface下载qwen模型只需要把代码中的中文部分替换成你的地址即可。
ModelScope(国内最常用)
python
import torch
from modelscope import snapshot_download, AutoModel, AutoTokenizer
import os
model_dir = snapshot_download('ZhipuAI/glm-4-9b-chat', cache_dir='/root/autodl-tmp', revision='master')
embedding_model_dir = snapshot_download('BAAI/bge-base-zh-v1.5', cache_dir='/root/autodl-tmp', revision='master')
模型加载
llama模型加载代码,修改地址后可直接使用
python
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
model_path = "/你的模型地址/Llama-3.1-8B-Instruct"
tokenizer = AutoTokenizer.from_pretrained(
model_path,
local_files_only=True,
trust_remote_code=True
)
model = AutoModelForCausalLM.from_pretrained(
model_path,
torch_dtype=torch.float16,
device_map="auto",
local_files_only=True,
trust_remote_code=True
)
messages = [
{"role": "system", "content": "你是一个有帮助的AI助手"},
{"role": "user", "content": "请简单介绍一下你自己。"}
]
prompt = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=200,
do_sample=True,
temperature=0.7,
top_p=0.9,
eos_token_id=tokenizer.eos_token_id,
pad_token_id=tokenizer.eos_token_id
)
result = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(result)