笔者电脑配置如下:
注意必须先搭建python环境哈,并且要64位的。
我的显卡一般因此选择了qwen3-4b模型,模型的下载地址为:
https://www.modelscope.cn/collections
如何下载大模型:
管理员身份启动cmd
#输入命令
pip install modelscope
在你的电脑本地创建一个用于存放模型文件的文件夹,笔者是D:\Code\bigMod\qwen34b
modelscope download --model Qwen/Qwen3-4B --local_dir "D:\Code\bigMod\qwen34b"
然后使用pycharm将qwen34b文件夹当做项目文件打开
然后在根目录新建一个py文件用于启动模型,我使用的是run_qwen.py
在pycharm的终端里安装一下依赖
pip install transformers torch accelerate sentencepiece einops
pip install modelscope # 如果使用ModelScope加载
pip install bitsandbytes # 用于4-bit量化
注意选择Cuda还是cpu具体取决于你的电脑或者服务器,笔者的电脑显卡虽然不太行,但是勉强将就。如果你的电脑没有独显,那么推荐使用cpu来计算。并且cuda应该要单独装一个驱动。笔者早年装过这个驱动(不知道不装有没有影响),所以不在赘述
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
# 配置参数
MODEL_PATH = "D:/Code/bigMod/qwen34b" # 你的模型路径
DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
QUANTIZE = True # 是否启用4-bit量化(RTX 3060强烈建议开启)
print(f"正在加载模型,设备: {DEVICE}")
print(f"模型路径: {MODEL_PATH}")
try:
# 加载tokenizer
tokenizer = AutoTokenizer.from_pretrained(
MODEL_PATH,
trust_remote_code=True,
use_fast=False
)
# 加载模型
if QUANTIZE and DEVICE == "cuda":
print("启用4-bit量化...")
model = AutoModelForCausalLM.from_pretrained(
MODEL_PATH,
device_map="auto",
trust_remote_code=True,
load_in_4bit=True, # 4-bit量化
bnb_4bit_compute_dtype=torch.float16,
bnb_4bit_quant_type="nf4",
bnb_4bit_use_double_quant=True
)
else:
print("加载完整精度模型...")
model = AutoModelForCausalLM.from_pretrained(
MODEL_PATH,
device_map="auto",
trust_remote_code=True,
torch_dtype=torch.float16 if DEVICE == "cuda" else torch.float32
)
print("模型加载成功!")
# 测试推理
def chat_with_model(prompt):
messages = [
{"role": "system", "content": "你是一个有用的AI助手。"},
{"role": "user", "content": prompt}
]
# 使用tokenizer的apply_chat_template方法(Qwen3支持)
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(DEVICE)
with torch.no_grad():
generated_ids = model.generate(
**model_inputs,
max_new_tokens=512,
do_sample=True,
temperature=0.6,
top_p=0.9,
pad_token_id=tokenizer.eos_token_id
)
# 去除输入部分,只保留生成内容
generated_ids = [
output_ids[len(input_ids):]
for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
return response
# 交互式对话
print("\n" + "=" * 50)
print("Qwen3-4B 已启动!输入 'exit' 退出对话。")
print("=" * 50 + "\n")
while True:
user_input = input("您: ")
if user_input.lower() in ['exit', 'quit', 'bye']:
print("再见!")
break
print("AI: ", end="", flush=True)
response = chat_with_model(user_input)
print(response)
except Exception as e:
print(f"加载模型时出错: {str(e)}")
import traceback
traceback.print_exc()
最后启动py文件,在控制台输入问题就好了
但是qwen3-4b真的有些笨,不推荐。