惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Darknet – Hacking Tools, Hacker News & Cyber Security
爱范儿
爱范儿
GbyAI
GbyAI
A
About on SuperTechFans
阮一峰的网络日志
阮一峰的网络日志
U
Unit 42
博客园_首页
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
S
Secure Thoughts
Security Latest
Security Latest
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Hacker News - Newest:
Hacker News - Newest: "LLM"
PCI Perspectives
PCI Perspectives
MyScale Blog
MyScale Blog
罗磊的独立博客
Y
Y Combinator Blog
Know Your Adversary
Know Your Adversary
月光博客
月光博客
C
CXSECURITY Database RSS Feed - CXSecurity.com
Recorded Future
Recorded Future
S
Securelist
T
Tor Project blog
Apple Machine Learning Research
Apple Machine Learning Research
人人都是产品经理
人人都是产品经理
WordPress大学
WordPress大学
The GitHub Blog
The GitHub Blog
P
Privacy & Cybersecurity Law Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
雷峰网
雷峰网
Microsoft Security Blog
Microsoft Security Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Project Zero
Project Zero
T
Tailwind CSS Blog
腾讯CDC
C
Cisco Blogs
T
The Exploit Database - CXSecurity.com
The Hacker News
The Hacker News
F
Full Disclosure
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
美团技术团队
N
Netflix TechBlog - Medium
云风的 BLOG
云风的 BLOG
N
News and Events Feed by Topic
C
Cybersecurity and Infrastructure Security Agency CISA
D
Docker
酷 壳 – CoolShell
酷 壳 – CoolShell
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Threat Research - Cisco Blogs
O
OpenAI News
Cloudbric
Cloudbric

博客园 - 一贴灵

DOCKER 学习笔记 关于企业自建AI Qwen-Agent是一个开发框架 python 换源方法 设备虐我千百遍,AI待我如初恋 蓝凌OA流程附件 蓝凌OA 流程管理数据结构字典(km_review_main) Windows 包管理器:chocolatey 配置 npm 国内镜像(重要!) OpenTalking 负责实时数字人编排 readme pip install -e ".[dev]"的文件在pyproject.toml或 setup.py​ 里 CC SWITCH配置百练的token plan给 claude pgsql 带转义符的更新,$$ '更新内容'$$ 新手提效必看!Claude Code只需这九个Skills(转) 技术要用来向善:水印机机 与盲水印 另类文件备份方法 转:PostgreSQL向量检索:pgvector入门指南 设置pip全局镜像源(国内加速) Chroma数据库入门到进阶教程(转) pip install 使用国内镜像安装加快速度 调整指标达成插入yjlx表的sql OpenClaw 的 select channel中没有直接显示微信选项怎么办? openrouter 免费API-KEY hermes安装笔记 Winform程序中NumberUpdown控件作为年月选择框的代码增强 Claude code简版使用手册 白嫖API-KEY汇总 OpenClaw安装中提示:systemctl --user unavailable:错误处理 SQL 行数据生成器 用友 主要库及表 网传免费TOKEN PaddleOCR本地部署指南:Windows环境下的OCR服务搭建实践 python虚拟环境建议及激活 删除 winform表单中datagridview实现EXCEL式列筛选 和零售/新零售有关的英文缩写(转) Windows系统下顺利安装并运行OpenClaw Gradio入门快速搭建AI算法可视化部署演示(以使用OCR模型unirec为例)(转) 转:魔搭社区每天免费提供2000次Claude Code调用 查询 PostgreSQL 当前连接数的常用方法 PyInstaller 是将你的 Python 打包成一个独立的可执行文件 大叔学springboot ,且学且记 idea+sprinboot+postgres创建WEB项目
qwen3-0.6B初探
一贴灵 · 2026-06-18 · via 博客园 - 一贴灵

一个标准的 Hugging Face / ModelScope 模型文件夹通常包含以下几类文件,它们各自扮演着不同的角色:

  • 模型权重文件(大脑本体)

    • model.safetensors (1.39G):这是模型真正的“知识”所在。它是一个二进制文件,里面存储了模型训练好的所有参数(权重)。safetensors 是目前推荐的格式,因为它比传统的 .bin 格式加载速度更快,且更安全。
  • 模型架构与配置文件(说明书)

    • config.json:模型的“架构说明书”。它定义了模型长什么样、怎么运行,比如包含多少层、隐藏层维度、注意力头数等核心参数。没有它,代码就不知道如何搭建模型。
    • generation_config.json:模型生成文本时的“行为规则”。它包含了默认的生成参数,比如温度(temperature)、最大生成长度等,控制着模型回答时的风格。
  • 分词器文件(翻译官)

    • tokenizer.json / tokenizer_config.json:分词器的核心配置和词表。它们的作用是将你输入的自然语言(文字)转换成模型能懂的数字信号(Token ID),并在模型输出后将数字翻译回文字。
    • merges.txt:定义了分词的合并规则,配合词表实现 BPE(字节对编码)分词算法。
  • 辅助与元数据文件

    • README.md:模型的使用说明文档,通常包含模型的用途、限制、使用示例和版权信息。
    • LICENSE:许可证文件,说明该模型的使用条款(例如 Qwen3 系列通常遵循 Apache 2.0 协议,允许免费商用)。

为什么代码里没写路径,它还能找到模型?

在之前的代码中,我们写的是 model_name="Qwen/Qwen3-0.6B"
这就像你在网购平台搜索商品一样:

  • 如果你只输入商品名(Qwen/Qwen3-0.6B),系统会默认去网上的大仓库(ModelScope 或 Hugging Face)帮你下载。
  • 如果你把本地文件夹的绝对路径(比如 D:/my_models/Qwen3-0.6B)填进去,系统就会直接去你的电脑硬盘里找它,不再联网下载。

如何修改代码来使用你本地下载的模型?

非常简单!你只需要把 QwenChatbot 类初始化时的默认路径,改成你电脑上存放模型的真实文件夹路径就可以了。

假设你下载的模型文件夹叫 Qwen3-0.6B,放在桌面的 models 

# 修改前(去网上找):
# def __init__(self, model_name="Qwen/Qwen3-0.6B"):

# 修改后(去你电脑的本地找):
class QwenChatbot:
    def __init__(self, model_name=r"D:\models\Qwen3-0.6B"):  # ⬅️ 这里换成你电脑上的真实路径
        print("🤖 机器人正在加载大脑和翻译官,请稍等...")
        # ... 后面的代码保持不变

附:原

# 第一步:从工具箱里拿出我们需要的工具
# AutoModelForCausalLM:这是机器人的“大脑”
# AutoTokenizer:这是机器人的“翻译官”,负责把我们的话变成机器能懂的数字
from modelscope import AutoModelForCausalLM, AutoTokenizer
import torch  # 引入 torch 库,这是用来控制机器人运行速度的“加速器”

# 第二步:定义一个机器人的“图纸”(在编程里叫“类”)
class QwenChatbot:
    # 这是机器人的“出生说明书”(初始化方法)
    # 当你第一次启动它时,它就会按照这里的步骤准备自己
    def __init__(self, model_name="Qwen/Qwen3-0.6B"):
        print("🤖 机器人正在加载大脑和翻译官,请稍等...")
        
        # 1. 加载翻译官
        self.tokenizer = AutoTokenizer.from_pretrained(model_name)
        
        # 2. 加载大脑(⚠️ 重点优化:加了 device_map="auto" 和 torch_dtype)
        # device_map="auto":意思是“请自动帮我找一台合适的电脑(或显卡)来运行我”
        # torch_dtype=torch.bfloat16:意思是“请用省内存的模式加载大脑”,这样小电脑也能跑得动!
        self.model = AutoModelForCausalLM.from_pretrained(
            model_name, 
            device_map="auto", 
            torch_dtype=torch.bfloat16
        )
        
        # 3. 让大脑进入“考试模式”(⚠️ 重点优化:加了 eval())
        # eval() 的意思是告诉大脑:“现在是回答问题时间,不要做多余的动作(比如随机忘记东西)”
        self.model.eval() 
        
        # 4. 准备一个“小本本”(历史记录),用来记住我们之前聊过什么
        self.history = []
        print("✅ 机器人准备就绪!可以开始聊天啦!\n")

    # 这是机器人的“说话功能”
    def generate_response(self, user_input):
        # 1. 把新说的话和“小本本”上的旧话拼在一起
        messages = self.history + [{"role": "user", "content": user_input}]

        # 2. 让翻译官把拼好的话,变成机器人能看懂的格式
        text = self.tokenizer.apply_chat_template(
            messages,
            tokenize=False,
            add_generation_prompt=True
        )

        # 3. 把文本变成数字(⚠️ 重点优化:把数字放到和大脑相同的电脑设备上)
        # 如果不加 .to(self.model.device),大脑和数字不在同一个房间,机器人会报错罢工哦!
        inputs = self.tokenizer(text, return_tensors="pt").to(self.model.device)
        
        # 4. 大脑开始思考并回答问题(最多想 32768 个词)
        response_ids = self.model.generate(
            **inputs, 
            max_new_tokens=32768
        )[0][len(inputs.input_ids[0]):].tolist()
        
        # 5. 把机器人想出来的数字,翻译回我们能看懂的文字
        response = self.tokenizer.decode(response_ids, skip_special_tokens=True)

        # 6. 把刚才的对话记到“小本本”上(⚠️ 重点优化:防止小本本太厚被撑爆)
        # 如果聊得太久,小本本(历史记录)超过了 10 条,我们就把最旧的一条擦掉!
        self.history.append({"role": "user", "content": user_input})
        self.history.append({"role": "assistant", "content": response})
        
        # 如果历史记录超过 20 个(也就是 10 轮对话),就删掉最早的 2 个
        if len(self.history) > 20:
            self.history = self.history[2:] 

        # 7. 把机器人的回答交给你
        return response

# 第三步:启动机器人!(只有直接运行这个文件时,下面的代码才会执行)
if __name__ == "__main__":
    # 1. 制造一个机器人
    chatbot = QwenChatbot()

    # 2. 问它第一个问题(默认开启深度思考模式)
    user_input_1 = "How many r's in strawberries?"
    print(f"👦 你: {user_input_1}")
    response_1 = chatbot.generate_response(user_input_1)
    print(f"🤖 机器人: {response_1}")
    print("-" * 30)

    # 3. 问它第二个问题,并加上 /no_think 标签
    # 意思是:“这个问题很简单,你不用深度思考,直接回答我!”
    user_input_2 = "Then, how many r's in blueberries? /no_think"
    print(f"👦 你: {user_input_2}")
    response_2 = chatbot.generate_response(user_input_2)
    print(f"🤖 机器人: {response_2}") 
    print("-" * 30)

    # 4. 问它第三个问题,并加上 /think 标签
    # 意思是:“这个问题很难,请你开启深度思考模式,仔细想一想再回答!”
    user_input_3 = "Really? /think"
    print(f"👦 你: {user_input_3}")
    response_3 = chatbot.generate_response(user_input_3)
    print(f"🤖 机器人: {response_3}")