ChatGPT From Zero To Hero - LLM学习笔记(一)

作者:ASKED_2019日期:2025/10/3

如何训练一个chatGPT from zero to hero,主要来源是Karpathy 大神的视频
在这里插入图片描述

一、预训练 (Pretraining)

Unsupervised Training — 让模型“学会说话”

Step 1: Download and preprocessing the internet 下载并清洗互联网数据
  • 从开放语料抓取:Common Crawl、Wikipedia、Books、GitHub、StackExchange、ArXiv
  • 去重、过滤低质量和有害内容
  • 保证语料领域、语言分布均衡

现代大模型的预训练通常使用 10~15 万亿 tokens 的数据,覆盖多领域文本。


Step 2: Tokenization

Transform the raw data into unique IDs sequences
把原始文本转成唯一的 token ID 序列

  • 编码算法 / Algorithm:Byte Pair Encoding (BPE)
    高频连续出现的 bytes 对重新组合成 token
  • 示例 / Example
    playingplay + ing
  • 工具 / Tool在线分词工具

模型看到的是 token 而不是字母,因此它对拼写和数字敏感度低,容易数错。


Step 3: Neural network training
  1. Give you an intuition of the process of training
    在这里插入图片描述
    Take a window of tokens → predict the next token
    取一个 token 窗口,让模型预测下一个 token
  2. Model structure
    Transformer Decoder 堆叠,包含多层自注意力和前馈网络
    可视化参考:LLM Visualization
  3. 训练目标 / Objective
    最小化交叉熵损失 (Cross-Entropy Loss),优化下一个 token 的概率分布

Demo: Reproducing OpenAI’s GPT-2

推荐入门用 nanoGPT 复现小型 GPT-2 模型,几百行代码即可跑通。


二、后训练 (Post-training)

Supervised Training — 让模型“学会对话”

  1. Make some conversations
    收集高质量对话语料,让模型学会对话风格
  2. Encoding conversations
    用特殊 token 表示角色切换:
<|im_start|>user
What is 2+2?
<|im_end|>
<|im_start|>assistant
4
<|im_end|>


Hallucinations 幻觉问题

  1. What is & Why it is?
    Hallucination = 模型编造不存在的事实,只因它按概率预测最可能的下一个词
  2. How to solve it?
  • Allow the model to say “I don’t know”
  • 设计事实一致性训练:给模型真假陈述,强制学会拒绝编造
  • 更好的方案:让模型调用工具,如搜索、数据库,得到事实后再回答
<Search_START>who is Orson Kovacs?<Search_END>

→ 将搜索结果插入上下文,让模型更新回答


RLHF (Reinforcement Learning with Human Feedback)

通过人类反馈或奖励模型对回答排序,用 PPO/DPO 调整参数,让模型更符合人类偏好
目标:有用 Helpful + 无害 Harmless + 诚实 Truthful


三、SFT(Supervised Fine-tuning)

Problems Practice — 让模型“刷题

  • 收集特定任务的数据集:数学题、逻辑推理、代码挑战
  • 从简单到复杂,逐步训练(Curriculum Learning)
  • 可结合 Chain-of-Thought 提示,提升推理稳定性
    效果:显著提升模型在数学、推理、专业考试上的表现

四 Demo 资源推荐

  • 复现 GPT-2Andrej Karpathy 的 nanoGPT
    小规模 GPT 预训练示例,几百行代码就能跑通
  • RLHF 实践trl (HuggingFace)
    提供 PPO/DPO 的实现,能直接用来做偏好优化
  • 开源大模型: Llama 3 / Qwen
    可在已有权重上做 SFT 或 RLHF,成本更低

References:
1. Karpathy 大神讲解


ChatGPT From Zero To Hero - LLM学习笔记(一)》 是转载文章,点击查看原文


相关推荐


第2章 三个小工具的编写(2)
班公湖里洗过脚2025/10/2

2.3 PEComp的实现 PEComp是PE文件比较器。功能是按照PE文件格式的数据结构按字段对两个指定的PE文件进行比对,以获取两个PE文件结构中的不相同的信息。在实际应用中,我们可以通过对比病毒感染前后PE文件在相关字段上发生的变化来判断病毒的感染方式,从而确定清理病毒的方法。 2.3.1 编程思路 PEComp的功能是在通用框架pe.asm的基础上,实现两个PE文件的对比,并通过图形界面将不同之处形象地表示出来。编码的大致思路如下: 步骤1 打开要比较的两个文件,分别进行文件的内


SpringCloudGateway:像快递分拣中心一样的API网关
ccccczy_2025/10/2

实际场景引入 想象一下双十一期间的快递分拣中心。海量包裹(用户请求)从四面八方涌来,如何高效、准确地将它们分发到全国各地的配送站(微服务)?这正是Spring Cloud Gateway要解决的问题——作为微服务架构的“总入口”,它负责接收所有外部请求,并根据规则进行路由、过滤和安全控制。 深度解析:核心组件与代码示例 1. 路由(Route)—— 分拣流水线 路由是网关的基本单元,定义了请求从何而来,到哪里去。就像分拣线上的一条条通道,决定包裹的流向。 // 配置文件方式 gateway:


Mosquitto:MQTT Broker入门与分布式部署最佳实践
老坛程序员10/2/2025

本文介绍了开源MQTT代理服务器Mosquitto的核心特性、安装部署及扩展开发。Mosquitto由Eclipse基金会维护,支持MQTT 3.1/3.1.1/5.0协议,具有轻量高效、支持多种QoS等级、TLS加密等特点。文章详细说明了从GitHub源码编译安装的方法,并演示了基本的订阅发布测试。针对分布式场景,提供了多节点部署方案和Docker集群配置示例。最后介绍了如何开发自定义认证插件,通过数据库实现设备鉴权,包括插件框架设计、认证函数实现等关键技术点。全文为MQTT代理服务器的部署应用和功能扩展


多主机Docker Swarm集群网络拓扑可视化监控方案的部署规范
cpsvps_net10/1/2025

本文将从网络架构设计、监控工具选型、数据采集规范、可视化实现和安全策略五个维度,详细解析符合企业级标准的部署方案,帮助运维团队构建高可用、易维护的集群监控体系。


排序算法汇总,堆排序,归并排序,冒泡排序,插入排序
Tiny番茄9/30/2025

Code实现(使用python自带的堆进行实现)


某大厂库存秒杀的设计与实现总结
360_go_php2025/10/4

​ 在面试中,阿里这类大公司的技术面试中,关于高并发场景下的秒杀系统是一个常见的考察点。秒杀系统的核心目标是在大量用户同时请求某一商品时,如何高效、准确地处理并发请求,避免库存超卖,并确保系统的稳定性。下面将详细介绍阿里库存秒杀系统的实现原理和常用技术。​编辑 1. 秒杀系统的基本需求 秒杀系统需要应对高并发请求,尤其是在商品上线后几秒钟内,可能会有成千上万的请求涌入。系统的设计不仅要保证库存的准确性,还要保证用户体验和系统的高可用性。​编辑 2. 核心问题 高并发请求:如何处理成千上万的并发


Windows 环境下安装 Node.js 和 Vue.js 框架完全指南
做运维的阿瑞2025/10/5

本指南将引导你完成在 Windows 操作系统上安装 Node.js、配置 npm 以及安装 Vue.js 框架的全过程。无论你是前端开发新手还是想要搭建本地开发环境的开发者,这篇文章都将为你提供详细的步骤指导和实用技巧。 文章目录 🎯 1. 整体流程概览📦 2. 环境准备与系统要求2.1 系统要求2.2 预备知识 🔧 3. 安装 Node.js3.1 版本选择策略3.2 下载安装包3.3 图形化安装步骤验证安装 ⚡ 4. npm 包管理器配置与优化4.1 npm 基


JMeter接口测试
鱼鱼说测试2025/10/7

1小时postman接口测试从入门到精通教程 1、创建测试任务 添加线程组,右击测试计划,在快捷菜单单击添加-》线程(用户)-》线程组。设置线程组主要包含三个参数:线程数、Ramp-Up、循环次数。 线程数:设置虚拟用户数。一个虚拟用户占用一个进程或线程。线程数就相当于虚拟用户数。 Ramp-Up:设置的线程数启动时长,单位为秒。如果线程数为100,准备时长为20秒,那么需要20秒启动100个线程,平均每秒启动5个线程。 循环次数:每个线程发送请求的个数。如果线程数为100,


Vue3 响应式核心源码全解析:Dep、Link 与 track/trigger 完整执行机制详解
excel2025/10/8

逐行解读 Vue3 的响应式系统是整个框架的灵魂,它让开发者能够在不显式调用更新的情况下自动响应数据变化。本文将带你深入阅读 Vue3 的核心响应式模块源码,重点讲解 Dep、Link、track、trigger 等关键机制,并用通俗的语言串联其工作流程,让你真正理解 Vue3 响应式系统的运行原理。 一、响应式系统的设计思路 Vue3 的响应式系统基于 依赖收集(track) 与 派发更新(trigger) 两大过程: track:在读取响应式数据时记录依赖,建立「谁依赖了谁」的关系; t


微信小程序开发从零基础到项目发布的全流程实战教程(四)
Terio_my2025/10/10

小程序开发实战课程笔记 第一章:项目初始化与纯净环境搭建 在正式进入开发前,我们需要先创建一个干净的小程序项目环境,以便后续教学不受模板或默认配置干扰。 1.1 创建新项目 操作步骤: 打开 微信开发者工具。点击左上角「+」号或「新建项目」按钮。配置项目信息: 项目名称:demo002项目目录:选择本地存储路径AppID:填写自己的小程序 AppID(可使用测试号)项目类型:选择“小程序”不使用云服务不使用模板 ✅ 提示:务必勾选“不使用模板”,否则会自动引入 pa

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0