大模型入门:从概念到动手跑通 Qwen3-4B

目标:用初学者能听懂的口水话,把"大模型是什么、好在哪、怎么搭环境、怎么跑起来"一次性讲清楚。下面直接开唠。

一、大模型到底"大"在哪?

1. 参数爆炸

  • 70 亿起步,千亿、万亿不稀奇

  • 每一条参数都像大脑里的突触,越多越"聪明"

2. 数据管饱

  • 整个互联网高质量文本当教材

  • 训练目标简单粗暴——"给上句猜下句", technically 叫 Next Token Prediction

3. 通用 VS 专用

  • 传统小模型:一个任务就得训一个专科生

  • 大模型:直接招了个全科博士,写 Prompt 就能让它换岗,无需"岗前培训"(Fine-tune)

4. 与 BERT 的直观对比

表格

复制

维度 BERT-base Qwen3-235B
参数量 1.1 亿 2350 亿
用法 预训练→微调 预训练→提示
任务切换 重新训练 改提示词
硬件要求 2080 可跑 多卡 A100 才玩得转

一句话总结:BERT 像刚毕业的本科生,得按岗位再培训;大模型则是从业十年的老专家,嘴炮安排就能干活。

二、传统 NLP 任务速览(了解即可)

  1. 文本分类:垃圾邮件、情感极性

  2. 命名实体识别:抠人名、地名、机构名

  3. 机器翻译:中英互吹

  4. 问答系统:给定材料秒回答案

以前做上面任何一件事,都得单独整数据、整模型、调参数,繁琐到劝退。

三、环境配置:30 分钟搞定 GPU+框架+下载

假设你手里已有 Linux+NV 显卡,且 CUDA≥11.8,Pytorch≥2.0

1. 确认驱动

bash

复制

nvcc --version                  # 看 CUDA
python -c "import torch, torch.cuda; print(torch.__version__, torch.cuda.is_available())"
# 输出 True 代表 GPU 可用

2. 换国内 pip 镜像

bash

复制

pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple

3. 安装依赖

bash

复制

pip install -U huggingface_hub transformers modelscope accelerate

4. 选平台下模型

  • Hugging Face(全球仓库,需科学网络或镜像)

  • ModelScope(阿里出品,中文友好,教学推荐)

两条命令任选其一,断点续传不用怕掉线:

Python

复制

# HF 版
import os, subprocess
os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'
subprocess.run(
    "huggingface-cli download --resume-download Qwen/Qwen3-4B-Instruct-2507 "
    "--local-dir /root/autodl-tmp/model/Qwen3-4B".split()
)

# ModelScope 版
from modelscope import snapshot_download
snapshot_download('Qwen/Qwen3-4B-Instruct-2507',
                  cache_dir='/root/autodl-tmp/model',
                  revision='master')

四、上代码:让模型说出"你好"

Python

复制

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

model_path = '/root/autodl-tmp/model/Qwen/Qwen3-4B-Instruct-2507'
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
    model_path,
    torch_dtype="auto",
    device_map="cuda:0",
    trust_remote_code=True
)

prompt = "你好,请介绍一下自己"
text = tokenizer.apply_chat_template(
    [{"role": "user", "content": prompt}],
    tokenize=False,
    add_generation_prompt=True,
    enable_thinking=True      # 开启深度推理模式
)
inputs = tokenizer([text], return_tensors="pt").to(model.device)

generated = model.generate(**inputs, max_new_tokens=2048)
output_ids = generated[0][len(inputs.input_ids[0]):].tolist()

# 把思考内容</think>和最终回答拆开
try:
    split = len(output_ids) - output_ids[::-1].index(151668)  # </think> 的 token_id
except ValueError:
    split = 0
thinking = tokenizer.decode(output_ids[:split], skip_special_tokens=True)
answer = tokenizer.decode(output_ids[split:], skip_special_tokens=True)

print("思考过程:", thinking)
print("最终回答:", answer)

第一次跑会见到进度条疯狂刷屏,显卡显存 8G 左右即可hold住 4B 半精度。等看到模型自我介绍打印出来,环境就算全线打通。

五、常见坑 & 小贴士

  1. 显存不足 → 改torch_dtype=torch.float16 或 8-bit / 4-bit 量化

  2. 下载太慢 → 用 ModelScope;或者用 aria2c 多线程

  3. 找不到</think> → 模型版本差异,可关闭enable_thinking再试

  4. 中文乱码 → 检查tokenizer.json是否完整下载

  5. 权限报错 → 别用 root 跑?(其实 root 也能跑,只是 pip 会警告)

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐