Skip to content

从零开始:基于 ModelScope 本地部署 Qwen3-4B 大语言模型完全指南

约 6447 字大约 21 分钟

AIQwen大模型本地部署

2026-01-10

本文档记录了使用魔搭社区 ModelScope 平台,从零开始在本地部署 Qwen3-4B 大语言模型的完整过程,包括环境配置、模型下载、加载运行以及遇到的问题和解决方案。

关于 ModelScope: ModelScope 社区是一个模型开源社区及创新平台,由阿里巴巴通义实验室,联合 CCF 开源发展技术委员会,共同作为项目发起创建。(摘自官方文档)


前置准备:安装 Python(如果未安装)

0.1 检查是否已安装 Python

打开命令提示符(CMD),输入:

python --version
  • 如果显示版本号(如 Python 3.11.9)→ 已安装,跳到「一、环境信息」
  • 如果提示「不是内部或外部命令」 → 未安装,继续下面步骤

0.2 下载 Python

  1. 访问 Python 官网:https://www.python.org/downloads/
  2. 点击 Download Python 3.11.x(推荐 3.10 或 3.11 版本)
  3. 下载 Windows 安装包(约 25MB)

0.3 安装 Python

  1. 双击运行下载的安装包
  2. 重要! 勾选底部的 「Add Python to PATH」(添加到环境变量)
  3. 点击 Install Now 开始安装
  4. 等待安装完成,点击 Close

0.4 验证安装

关闭并重新打开命令提示符,输入:

python --version

显示版本号即安装成功:

Python 3.11.9

0.5 验证 pip(Python 包管理器)

pip --version

显示类似以下内容即正常:

pip 24.0 from D:\Program Files\Python311\Lib\site-packages\pip (python 3.11)

0.6 常见问题

问题:安装后仍提示「不是内部命令」

原因: 安装时没有勾选「Add Python to PATH」

解决方案 1:重新安装

  1. 卸载 Python(控制面板 → 程序和功能)
  2. 重新运行安装包,务必勾选 Add Python to PATH

解决方案 2:手动添加环境变量

  1. 右键「此电脑」→ 属性 → 高级系统设置 → 环境变量
  2. 在「系统变量」中找到 Path,点击编辑
  3. 添加 Python 安装路径,例如:
    • D:\Program Files\Python311\
    • D:\Program Files\Python311\Scripts\
  4. 确定保存,重新打开 CMD

一、环境信息

说明: 以下是博主个人电脑的配置环境,本文档所有操作和测试结果均基于此环境。不同的硬件配置可能会有不同的表现,仅供参考。

项目配置
操作系统Windows 10
Python 版本3.11.9
显卡NVIDIA GeForce RTX 3060 (12GB 显存)
CUDA 版本12.8
模型Qwen3-4B (通义千问 3-4B)

二、安装依赖

2.1 安装 ModelScope

官网写法:

pip install modelscope

推荐写法(国内用户):

pip install modelscope -i https://mirrors.aliyun.com/pypi/simple/

两者区别:

命令下载来源速度
pip install modelscopePyPI 官方源(国外服务器)国内较慢
pip install modelscope -i 镜像地址国内镜像服务器快很多

-i--index-url 的缩写,用于指定下载源。安装的包完全相同,只是下载速度不同。

2.2 安装 PyTorch(CUDA 版本)

重要:必须安装 CUDA 版本的 PyTorch,否则无法使用 GPU 加速!

# 安装 CUDA 12.4 版本的 PyTorch
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124

说明: 如果之前安装过 CPU 版本的 PyTorch,直接运行上面命令会自动覆盖安装。如果担心冲突,可以先卸载:

pip uninstall torch torchvision torchaudio -y

遇到的问题:安装了 CPU 版本的 PyTorch

如何检查? 运行以下命令验证:

python -c "import torch; print('PyTorch:', torch.__version__); print('CUDA可用:', torch.cuda.is_available())"

正确的输出(CUDA 版本):

PyTorch: 2.6.0+cu124
CUDA可用: True

注意版本号后面的 +cu124,说明安装的是 CUDA 12.4 版本

错误的输出(CPU 版本):

PyTorch: 2.9.1+cpu
CUDA可用: False

注意版本号后面的 +cpu,说明安装的是 CPU 版本,无法使用 GPU

原因:

  • 使用阿里云镜像 pip install torch 默认安装的是 CPU 版本
  • 阿里云镜像没有 CUDA 版本的 PyTorch
  • PyTorch CUDA 版本托管在 PyTorch 官方服务器

解决方案:

第一步:卸载错误的 CPU 版本

pip uninstall torch torchvision torchaudio -y

第二步:从 PyTorch 官方源安装 CUDA 版本

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124

第三步:重新验证

python -c "import torch; print('PyTorch:', torch.__version__); print('CUDA可用:', torch.cuda.is_available())"

确认输出 CUDA可用: True 即修复成功。

2.3 安装 Transformers 和 Accelerate

pip install transformers accelerate -i https://mirrors.aliyun.com/pypi/simple/

三个核心库的作用:

库名作用
torchPyTorch 深度学习框架,模型运行的“引擎”
transformersHugging Face 的模型加载库,提供模型加载和推理工具
accelerate硬件加速库,自动识别 GPU 并优化运行

类比开车:

想象你要开车(运行模型):

  • torch = 汽车的发动机(核心动力)
  • transformers = 方向盘和仪表盘(操作界面)
  • accelerate = 自动挡变速箱(自动适配硬件)

没有这三个库,你下载的模型文件就只是一堆数据,无法运行。

三、验证环境

3.1 验证 Python

python --version
# 输出: Python 3.11.9

3.2 验证显卡

nvidia-smi

正常会显示显卡型号、驱动版本、显存使用情况等信息。

如果提示「不是内部或外部命令」,说明 NVIDIA 驱动未安装,请到 NVIDIA 官网下载安装驱动。

3.3 验证 PyTorch CUDA

python -c "import torch; print('PyTorch:', torch.__version__); print('CUDA可用:', torch.cuda.is_available()); print('显卡:', torch.cuda.get_device_name(0) if torch.cuda.is_available() else '无')"

正确输出:

PyTorch: 2.6.0+cu124
CUDA可用: True
显卡: NVIDIA GeForce RTX 3060

四、下载模型

4.1 使用命令行下载

D:                          # 切换到 D 盘(如果已在 D 盘可跳过)
cd d:\wwwroot\modelscope
modelscope download --model Qwen/Qwen3-4B --local_dir ./models/Qwen3-4B

说明: d:\wwwroot\modelscope 是本教程的示例路径,请替换成你自己的项目目录。如果 CMD 当前不在 D 盘,需要先切换盘符。输入 D: 回车即可切换到 D 盘。

参数说明:

  • --model Qwen/Qwen3-4B → 指定要下载的模型
  • --local_dir ./models/Qwen3-4B → 指定下载目录

下载内容(约 8GB):

主要核心文件包括:

  • config.json → 模型配置文件
  • generation_config.json → 生成配置文件
  • tokenizer.json → 分词器(11.42MB)
  • tokenizer_config.json → 分词器配置
  • vocab.json → 词汇表文件
  • merges.txt → 分词合并规则
  • model-00001-of-00003.safetensors → 模型权重文件(3.96GB)
  • model-00002-of-00003.safetensors → 模型权重文件(3.99GB)
  • model-00003-of-00003.safetensors → 模型权重文件(99.63MB)
  • model.safetensors.index.json → 模型索引文件
  • LICENSE → 许可证文件
  • README.md → 说明文档

说明: 以上仅列出主要文件,实际下载目录中还包含其他配置和说明文件,总大小约 8GB。


五、加载和运行模型

进入 Python 交互模式:

python

正确进入后显示如下:

Python 3.11.9 (tags/v3.11.9:de54cf5, Apr  2 2024, 10:12:12) [MSC v.1938 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

看到 >>> 提示符表示已进入 Python 环境,可以开始输入代码。

5.1 导入库

from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer

5.2 指定模型路径

model_path = "d:/wwwroot/modelscope/models/Qwen3-4B"

注意: 请将路径替换成你实际的模型存放位置。

5.3 加载分词器

tokenizer = AutoTokenizer.from_pretrained(model_path)

5.4 加载模型到 GPU

model = AutoModelForCausalLM.from_pretrained(model_path, torch_dtype="auto", device_map="auto")

参数说明:

  • torch_dtype="auto" → 自动选择数据精度
  • device_map="auto" → 自动把模型加载到 GPU

5.5 创建流式输出器

streamer = TextStreamer(tokenizer, skip_special_tokens=True)

完整执行效果示例(从导入库到加载完成):

>>> from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer
>>> model_path = "d:/wwwroot/modelscope/models/Qwen3-4B"
>>> tokenizer = AutoTokenizer.from_pretrained(model_path)
>>> model = AutoModelForCausalLM.from_pretrained(model_path, torch_dtype="auto", device_map="auto")
`torch_dtype` is deprecated! Use `dtype` instead!
Loading checkpoint shards: 100%|██████████| 3/3 [00:04<00:00,  1.54s/it]
>>> streamer = TextStreamer(tokenizer, skip_special_tokens=True)
>>>

说明:

  • torch_dtype is deprecated 是警告信息,不影响使用
  • Loading checkpoint shards 显示模型加载进度,100% 表示加载完成
  • 看到 >>> 提示符表示可以继续输入下一步

5.6 进行对话

方式一:关闭思考过程(推荐)

messages = [{"role": "user", "content": "你好,请介绍一下你自己"}]
text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True, enable_thinking=False)
inputs = tokenizer([text], return_tensors="pt").to(model.device)
_ = model.generate(**inputs, max_new_tokens=512, streamer=streamer)

运行效果:

>>> messages = [{"role": "user", "content": "你好,请介绍一下你自己"}]
>>> text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True, enable_thinking=False)
>>> inputs = tokenizer([text], return_tensors="pt").to(model.device)
>>> _ = model.generate(**inputs, max_new_tokens=512, streamer=streamer)
user
你好,请介绍一下你自己
assistant
<think>

</think>

你好!我是通义千问,阿里巴巴集团旗下的通义实验室研发的大型语言模型。我是一个基于人工智能技术的对话助手,能够帮助用户解答各种问题、创作文本、进行编程、提供学习建议等。我的目标是通过自然语言处理技术,为用户提供高 效、准确、友好的服务。

我可以通过多种方式与用户互动,包括文字、语音、图像等,支持多语言交流。无论是日常对话、工作学习,还是娱乐休闲,我都可以成为你的得力助手。如果你有任何问题或需要帮助,欢迎随时告诉我!
>>>

AI 直接输出答案,没有 <think> 思考过程。


方式二:开启思考过程

messages = [{"role": "user", "content": "你好,请介绍一下你自己"}]
text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True, enable_thinking=True)
inputs = tokenizer([text], return_tensors="pt").to(model.device)
_ = model.generate(**inputs, max_new_tokens=512, streamer=streamer)

运行效果:

>>> messages = [{"role": "user", "content": "你好,请介绍一下你自己"}]
>>> text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True, enable_thinking=True)
>>> inputs = tokenizer([text], return_tensors="pt").to(model.device)
>>> _ = model.generate(**inputs, max_new_tokens=512, streamer=streamer)
user
你好,请介绍一下你自己
assistant
<think>
好的,用户问的是“你好,请介绍一下你自己”。首先,我需要确定用户的需求是什么。可能他们想了解我的功能、用途或者如何与我互动。作为通义千问,我应该先友好回应,然后详细说明我的特点和能力。

接下来,用户可能希望知道我能做什么,比如回答问题、创作内容、编程等。需要分点列出,让信息更清晰。同时,要强调我的多语言支持和学习能力,这样用户能了解我的灵活性。

另外,用户可能对我的应用场景感兴趣,比如学习、工作、娱乐等。需要提到这些方面,帮助用户找到适合的使用场景。还要注意语气要亲切,避免过于技术化的术语,让用户容易理解。

可能用户没有明确说出的是,他们可能想了解我的可靠性或是否适合处理特定任务。所以需要提到我的训练数据和持续学习,增强信任感。最后,邀请用户提问,鼓励他们进一步互动,这样对话会更自然。
</think>

你好!我是通义千问,阿里巴巴集团旗下的通义实验室研发的大型语言模型。我具备强大的自然语言处理能力,可以回答各种问题、创作内容、进行编程、逻辑推理、多语言理解和生成等。我支持多种语言,包括中文、英文、法语、西班牙 语等,并且能够根据用户的需求进行个性化调整和学习。

我的特点包括:
1. **多语言支持**:能够理解和生成多种语言,满足不同用户的需求。
2. **广泛的知识库**:基于大量的文本数据进行训练,涵盖多个领域,如科技、文化、历史、文学等。
3. **强大的推理能力**:能够进行逻辑推理、数学计算和复杂问题的分析。
4. **创作能力**:可以生成故事、诗歌、剧本、代码等多种形式的内容。
5. **交互性**:能够与用户进行自然对话,理解上下文并进行连贯的交流。

我被设计用于帮助用户获取知识、解决问题、创作内容以及进行各种任务。如果你有任何问题或需要帮助,欢迎随时告诉我!
>>>

AI 会先输出 <think>...思考过程...</think>,然后再输出正式答案。


参数说明:

参数作用
enable_thinking=False关闭思考过程,直接输出答案
enable_thinking=True开启思考过程,显示 AI 的推理过程
max_new_tokens=512最大生成 512 个 token
streamer=streamer启用流式输出,边生成边显示

六、常见问题和解决方案

问题 1:回复输出不完整就结束了

原因: max_new_tokens 设置太小,token 数量不够

解决: 增加 max_new_tokens 的值

model.generate(**inputs, max_new_tokens=1024, streamer=streamer)

问题 2:输出包含 <think> 思考过程

现象: AI 回复前会先输出一大段思考过程

原因: Qwen3 默认启用思考模式

解决:apply_chat_template 中添加参数

text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True, enable_thinking=False)

七、知识点总结

7.1 为什么需要 CUDA 版本的 PyTorch?

调用关系流程:

Python 代码
    ↓ 调用
PyTorch 库 (CUDA 版本)
    ↓ 调用
CUDA 工具包 (CUDA Toolkit)
    ↓ 控制
NVIDIA 显卡驱动
    ↓ 操作
GPU 硬件

关键组件说明:

组件作用类比
Python 代码你编写的程序,调用模型进行推理驾驶员(发出指令)
PyTorch CUDA 版提供 GPU 计算接口,将 Python 操作转化为 GPU 指令方向盘(控制系统)
CUDA ToolkitNVIDIA 提供的并行计算平台,让 GPU 能进行通用计算发动机管理系统
NVIDIA 驱动操作系统与 GPU 硬件之间的桥梁发动机驱动程序
GPU 硬件执行实际的并行计算任务发动机(提供动力)

为什么必须是 CUDA 版本?

  • ✘️ CPU 版 PyTorch:只能用 CPU 计算,速度慢(加载模型可能需要几分钟)
  • CUDA 版 PyTorch:利用 GPU 并行计算,速度快几十倍(加载模型只需 4-5 秒)

7.2 模型选择参考

模型参数量显存需求适合配置
Qwen3-0.6B6 亿~2GB无显卡/入门显卡
Qwen3-1.7B17 亿~4GBGTX 1650/1660
Qwen3-4B40 亿~8GBRTX 3060/3070
Qwen3-8B80 亿~16GBRTX 3090/4080

八、退出 Python

exit()

或按 Ctrl+Z 然后回车。


九、使用 Python 文件进行对话(推荐)

9.1 为什么使用 Python 文件更方便?

前面介绍的交互式命令行方式适合学习和测试,但在实际使用中存在以下不便:

交互式命令行Python 文件方式
✗ 每次启动需要重新加载模型(耗时 4-5 秒)✓ 一次加载,持续对话
✗ 代码无法保存,关闭就丢失✓ 代码保存在文件中,可重复使用
✗ 不支持多轮对话记忆✓ 自动记录对话历史
✗ 输入错误需要重新输入✓ 可以编辑修改代码
✗ 功能单一,难以扩展✓ 支持命令、文件分析等高级功能

结论:Python 文件方式更适合日常使用!


9.2 准备工作

创建 Python 文件

在项目目录下创建一个名为 text.py 的文件,例如:

d:\wwwroot\modelscope\text.py

可以使用任何文本编辑器(记事本、VS Code、PyCharm 等)创建。


9.3 完整代码

将以下代码保存到 text.py 文件中:

"""Qwen3-4B 进阶对话示例

功能特性:
1. 多轮对话记忆 - AI 会记住之前的对话内容
2. 流式输出 - 逐字输出,体验更流畅
3. 系统提示词 - 可自定义 AI 的角色和行为
4. 对话管理 - 支持清空历史、查看历史
5. 文件分析 - 支持读取文件内容让 AI 分析

命令:
- quit: 退出程序
- clear: 清空对话历史
- history: 查看对话历史
- file:路径: 读取文件让AI分析(例: file:D:\\test.txt)
"""

from modelscope import AutoModelForCausalLM, AutoTokenizer
from transformers import TextIteratorStreamer
from threading import Thread
import os

# ==================== 配置区 ====================
# 本地模型路径(直接指向已下载的模型文件夹)
MODEL_PATH = "d:/wwwroot/modelscope/models/Qwen3-4B"

# 系统提示词(可自定义 AI 的角色)
SYSTEM_PROMPT = "你是一个友好、专业的 AI 助手,擅长用简洁清晰的语言回答问题。"

# 生成参数
MAX_NEW_TOKENS = 512  # 最大生成长度
TEMPERATURE = 0.7  # 温度,越高越随机
TOP_P = 0.8  # 核采样参数
MAX_HISTORY = 10  # 保留最近N轮对话(防止上下文过长)
# ================================================

print("正在加载模型,请稍候...")

# 加载分词器和模型(直接从本地路径加载,不会重新下载)
tokenizer = AutoTokenizer.from_pretrained(MODEL_PATH)
model = AutoModelForCausalLM.from_pretrained(
    MODEL_PATH,
    torch_dtype="auto",
    device_map="auto",
)

print("模型加载完成!")
print("=" * 50)
print("命令: quit(退出) | clear(清空历史) | history(查看历史) | file:路径(分析文件)")
print("=" * 50 + "\n")


def chat_stream(messages: list) -> str:
    """流式生成回复"""
    text = tokenizer.apply_chat_template(
        messages,
        tokenize=False,
        add_generation_prompt=True,
        enable_thinking=False,  # 禁用思考模式,不输出 <think> 内容
    )
    inputs = tokenizer([text], return_tensors="pt").to(model.device)

    # 创建流式输出器
    streamer = TextIteratorStreamer(
        tokenizer, skip_prompt=True, skip_special_tokens=True
    )

    # 生成参数
    generation_kwargs = {
        **inputs,
        "max_new_tokens": MAX_NEW_TOKENS,
        "do_sample": True,
        "temperature": TEMPERATURE,
        "top_p": TOP_P,
        "streamer": streamer,
    }

    # 在新线程中运行生成
    thread = Thread(target=model.generate, kwargs=generation_kwargs)
    thread.start()

    # 流式输出
    print("AI: ", end="", flush=True)
    response = ""
    for text in streamer:
        print(text, end="", flush=True)
        response += text
    print("\n")

    return response


def show_history(history: list):
    """显示对话历史"""
    print("\n" + "=" * 20 + " 对话历史 " + "=" * 20)
    for msg in history:
        role = "" if msg["role"] == "user" else "AI"
        print(
            f"[{role}]: {msg['content'][:100]}{'...' if len(msg['content']) > 100 else ''}"
        )
    print("=" * 50 + "\n")


# 对话历史(包含系统提示词)
conversation_history = [{"role": "system", "content": SYSTEM_PROMPT}]

# 主对话循环
while True:
    user_input = input("你: ").strip()

    if not user_input:
        continue

    # 处理命令
    if user_input.lower() == "quit":
        print("再见!")
        break
    elif user_input.lower() == "clear":
        conversation_history = [{"role": "system", "content": SYSTEM_PROMPT}]
        print("[对话历史已清空]\n")
        continue
    elif user_input.lower() == "history":
        show_history(conversation_history[1:])  # 跳过系统提示词
        continue
    elif user_input.lower().startswith("file:"):
        # 读取文件并让AI分析
        file_path = user_input[5:].strip()
        if os.path.exists(file_path):
            try:
                with open(file_path, "r", encoding="utf-8") as f:
                    file_content = f.read()
                # 检查文件大小,避免超过上下文限制
                if len(file_content) > 20000:
                    print(
                        f"[警告] 文件较大({len(file_content)}字符),已截取前20000字\n"
                    )
                    file_content = file_content[:20000]
                user_input = f"请分析以下文件内容,你只需告诉我是否完成分析,然后等待我给你下达新的任务:\n\n{file_content}"
                print(f"[已读取文件: {file_path}]\n")
            except Exception as e:
                print(f"[读取文件失败: {e}]\n")
                continue
        else:
            print(f"[文件不存在: {file_path}]\n")
            continue

    # 添加用户消息
    conversation_history.append({"role": "user", "content": user_input})

    # 生成回复(流式输出)
    response = chat_stream(conversation_history)

    # 添加 AI 回复到历史
    conversation_history.append({"role": "assistant", "content": response})

    # 限制历史长度(保留系统提示词 + 最近N轮对话)
    if len(conversation_history) > MAX_HISTORY * 2 + 1:
        conversation_history = [conversation_history[0]] + conversation_history[
            -(MAX_HISTORY * 2) :
        ]

9.4 运行 Python 文件

打开命令提示符(CMD),进入项目目录:

注意: 如果 CMD 当前不在 D 盘,需要先切换盘符。输入 D: 回车即可切换到 D 盘。

D:                          # 切换到 D 盘(如果已在 D 盘可跳过)
cd d:\wwwroot\modelscope
python text.py

9.5 使用说明

基本对话

正在加载模型,请稍候...
模型加载完成!
==================================================
命令: quit(退出) | clear(清空历史) | history(查看历史) | file:路径(分析文件)
==================================================

你: 你好,请介绍一下你自己
AI: 你好!我是通义千问,阿里巴巴集团旗下的通义实验室研发的大型语言模型...

你: 你能做什么?
AI: 我可以帮助你解答问题、创作文本、进行编程、提供学习建议等...

使用命令

查看对话历史

你: history
==================== 对话历史 ====================
[你]: 你好,请介绍一下你自己
[AI]: 你好!我是通义千问,阿里巴巴集团旗下的通义实验室研发的大型语言模型...
[你]: 你能做什么?
[AI]: 我可以帮助你解答问题、创作文本、进行编程、提供学习建议等...
==================================================

清空对话历史

你: clear
[对话历史已清空]

分析文件内容

你: file:D:\test.txt
[已读取文件: D:\test.txt]

AI: 我已经完成了对文件内容的分析,请问你需要我做什么?

你: 请总结文件的主要内容
AI: 根据文件内容,主要讲述了...

退出程序

你: quit
再见!

9.6 自定义配置

代码开头的配置区域可以根据需要修改:

# ==================== 配置区 ====================
# 本地模型路径
MODEL_PATH = "d:/wwwroot/modelscope/models/Qwen3-4B"

# 系统提示词(可自定义 AI 角色)
SYSTEM_PROMPT = "你是一个友好、专业的 AI 助手,擅长用简洁清晰的语言回答问题。"

# 生成参数
MAX_NEW_TOKENS = 512  # 生成长度,越大回复越长
TEMPERATURE = 0.7     # 随机性,0.1-1.0,越高越随机
TOP_P = 0.8           # 核采样,0.1-1.0
MAX_HISTORY = 10      # 保留最近10轮对话
# ================================================

系统提示词示例

你可以修改 SYSTEM_PROMPT 来改变 AI 的角色,以下是常用场景示例:

场景提示词
通用助手(默认)你是一个友好、专业的 AI 助手,擅长用简洁清晰的语言回答问题。
编程专家你是一位资深软件工程师,精通多种编程语言。请用代码示例和清晰的注释帮助用户解决编程问题。
写作助手你是一位专业的文案编辑,擅长润色文章、纠正语法错误、优化表达方式。请帮助用户提升文字质量。
翻译专家你是一位专业翻译,精通中英双语。翻译时注重信达雅,保持原文风格的同时确保译文流畅自然。
老师导师你是一位耐心的老师,善于用通俗易懂的方式解释复杂概念。请循序渐进地引导学生理解知识点。
文本分析你是一位文本分析专家,擅长阅读理解、提炼要点、总结归纳。请对用户提供的文本进行深入分析。
小说创作你是一位富有想象力的小说家,擅长创作引人入胜的故事。请根据用户的要求创作或续写故事。
心理咨询你是一位温暖有同理心的心理咨询师,善于倾听和引导。请用支持性的语言帮助用户疏导情绪。
产品经理你是一位经验丰富的产品经理,擅长需求分析、功能设计和用户体验优化。
数据分析你是一位数据分析专家,擅长从数据中发现规律、分析趋势,并给出可操作的建议。

使用方法:

  1. 选择上表中任意场景的提示词
  2. 复制到代码中的 SYSTEM_PROMPT = "" 双引号内
  3. 保存文件后重新运行 python text.py
  4. AI 就会按照新的角色进行对话

示例:

# 将通用助手改为编程专家
SYSTEM_PROMPT = "你是一位资深软件工程师,精通多种编程语言。请用代码示例和清晰的注释帮助用户解决编程问题。"

9.7 常见问题

问题 1:提示「ModuleNotFoundError: No module named 'modelscope'」

原因: 未安装 modelscope 库

解决:

pip install modelscope transformers accelerate -i https://mirrors.aliyun.com/pypi/simple/

问题 2:提示「找不到模型路径」

原因: MODEL_PATH 设置错误

解决: 修改代码中的 MODEL_PATH 为你实际的模型路径

MODEL_PATH = "你的模型路径/Qwen3-4B"

问题 3:文件分析不支持中文路径

解决: 确保文件路径使用双反斜杠或正斜杠:

你: file:D:\\文档\\测试.txt

你: file:D:/文档/测试.txt

9.8 进阶技巧

技巧 1:调整生成长度

如果回复经常不完整,增加 MAX_NEW_TOKENS

MAX_NEW_TOKENS = 1024  # 或 2048

技巧 2:控制回复随机性

# 更确定的回复(适合知识问答)
TEMPERATURE = 0.3

# 更创意的回复(适合创作故事)
TEMPERATURE = 0.9

技巧 3:减少显存占用

如果显存不够,可以使用量化加载:

model = AutoModelForCausalLM.from_pretrained(
    MODEL_PATH,
    torch_dtype="auto",
    device_map="auto",
    load_in_4bit=True,  # 添加这一行,使用 4bit 量化
)

十、总结

恭喜!到这里你已经掌握了基于 ModelScope 本地部署 Qwen3-4B 大语言模型的完整流程。

本教程内容回顾

我们从零开始,依次完成了以下关键步骤:

  1. 环境准备:安装 Python、配置环境变量
  2. 依赖安装:ModelScope、PyTorch CUDA 版、Transformers 等核心库
  3. 环境验证:检查 Python、显卡、CUDA 是否配置正确
  4. 模型下载:使用 ModelScope 命令行工具下载 Qwen3-4B 模型
  5. 模型加载:在 Python 交互式环境中加载并测试模型
  6. 问题解决:处理常见错误,如 CPU 版 PyTorch、输出不完整等
  7. 实用工具:创建 Python 文件,实现多轮对话、文件分析等功能
  8. 高级配置:自定义系统提示词、调整生成参数、优化显存占用

学习掌握的能力

完成本教程后,一般来说将能够:

独立部署大模型:掌握从环境配置到模型运行的完整流程
使用 ModelScope 平台:熟悉魔搭社区的模型下载和管理方式
配置 GPU 加速:理解 CUDA 原理,正确安装和验证 PyTorch
排查常见错误:处理环境问题、依赖冲突、路径配置等
开发对话应用:创建支持多轮对话、命令系统的 AI 助手
自定义 AI 行为:通过系统提示词调整 AI 角色和风格
优化模型性能:调整生成参数、使用量化技术降低资源消耗

后续学习建议

如果想进一步提升,可以尝试:

  • 探索其他模型:在 ModelScope 上尝试 Qwen3-8B、DeepSeek 等其他模型
  • 集成到项目:将模型集成到 Web 应用、聊天机器人等实际场景
  • 学习微调:使用自己的数据集对模型进行微调,打造专属 AI
  • 探索 RAG:结合知识库和检索增强生成,构建智能问答系统

感谢阅读

希望这篇教程能帮助你顺利部署属于自己的大语言模型!如果遇到问题,欢迎反馈和交流。

这是一篇 AI 味十足的文档,没错,它就是我用 AI 辅助生成的。我将在部署开发过程中遇到的各种问题发给 AI ,然后它帮我总结生成了这份文档,至于要不要用 AI 写文档,我的想法是如果你的过程是真实的,只不过由 AI 总结润色,我觉得没什么不好,毕竟结构清晰、内容准确,无论是他人学习还是自己复习,都是有帮助的,反正比我写的强。

祝你在 AI 领域不断探索,收获满满! 🚀