如何在win11上本地部署qwen3-4b大模型

50 阅读2分钟

笔者电脑配置如下:

注意必须先搭建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真的有些笨,不推荐。