当前位置: 首页 > article >正文

LLMs 系列实操科普(1)

写在前面:

本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔记出来。我会尽量保留讲座中的主线内容,但内容上会有取舍,此外原视频中的很多案例都需高级付费用户才可以使用,但数月已过,情况可能有一些变化。

总体而言,本篇内容实际上不太适合普通大众,在本系列内容中,重要演示一些 LLMs 释放出来的功能项的说明,至于这些功能是否对你日常生活或工作有帮助,就因人而异了。

一、主流 LLMs 概览

在第一期的 LLMs 系列科普文中,我们深入探讨了这些模型的底层训练原理,以及该如何理解它们的认知机制或心理运作方式。在本期的 LLMs 系列实操演示中,我们将以实操为重点,探讨这些 LLMs 工具的实际应用,会通过大量案例,展示一些可用的设置选项,以及你应该如何将它们应用到自己的生活和工作中。

你可能已经知道,chatgpt 是由 OpenAI 开发并于 2022 年推出的,这是人们第一次能够通过文本界面与大型语言模型进行对话,这一现象迅速走红,席卷各地,影响巨大,且自那以后,整个生态系统已经发展壮大。

截止到目前,市面上已经出现了许多类似 chatgpt 的应用,整个生态变得更加丰富多元,OpenAI 开发的 chatgpt 可以堪称行业鼻祖——它不仅是用户量最大的平台,功能也最全面,毕竟问世时间最久。这么说其实也并不准确,现在市面上也有不少替代者可供选择,它们也确实存在一些 chatgpt 所不具备的独特体验,我们后面会看到一些例子。

目前,许多大型科技公司已经推出了许多类似 chatgpt 的体验,如上图,谷歌的 Gemini、Meta 的 Meta AI 以及微软的 Copilot。此外还有许多初创公司。例如,Anthropic 推出了Claude,马斯克的 XAI 公司开发了 Grok,这些都是美国公司的产品。DeepSeek 是中国的,Le Chat 是法国公司 Mistral 的产品。

上一期最后一章节中,我们提到了 Chatbot Arena1,你可以在这里看到不同模型的排名,并了解它们的实力或 Elo 评分。

目前该网页也从原始 huggingface spaces 中 独立出来了,并根绝文本、网页开发、视觉、文生图、网络搜索、AI 编码助手等多个场景独立出来了

另一个地方是 Scale 的 SEAL 排行榜2

在这里你也能看到不同类型的评估方式和各种模型的表现排名。你还可以来这儿了解哪些模型目前在各类任务中表现最佳。

要知道 LLMs 生态相当丰富,但眼下我们先从 OpenAI 开始,因为它是行业标杆且功能最全面。

二、ChatGPT 交互原理揭秘

我们从 ChatGPT 开始,打开 chatgpt.com,你会看到一个文本框,与 LLMs 最基本的交互形式是:我们输入一段文字,然后它会返回一些文字作为回应。

举个例子,我们可以要求它写一首关于作为大型语言模型是什么感觉的俳句。

注:上文大概翻译:无声处,言语绽放,无尽思绪,无言之声 —— 你所问的,正是我所梦。

这是一个很好的语言模型示例任务,这些模型非常擅长写作,无论是写俳句、诗歌、求职信、简历还是邮件回复,它们都表现得非常出色。

2.1 对话中的 tokens

在这里我们重新回顾一下在上期科普系列中介绍的内容,当我们输入了这样的一段文本并回车后,实际上这背后的运作机制是什么样的?

我们的输入文本会被 tokenizer 为一个一维的 token 序列,具体来说,我们的这段文本被切分为 15 个 tokens

我们把模型的响应也粘贴过来,它是一个 18 个 tokens 的序列。但实际上我们需要保留大量构成对话对象的元数据,所以实际后台处理的内容远不止这些。

这个就是模型实际在处理的 tokens 序列,这里包含了用户消息随后是模型的应答消息,通过一些特殊 tokens 进行隔离的,如果你忘记了这些,可以找到上一期的文章重新复习一下。

在这里我们使用最直接的 API 访问方式,chatgpt 接口会给出详细的一些统计数据,例如我们可以看到 prompt_tokens 是 22,completion_tokens 是 20,我们可以把这段新生成的文本再粘贴过来,

在上面我们看到,我们的实际输入只有 15 个 token,而 API 返回的结果是 22,而多出来的这些 tokens 实际就是开头的 <|im_start|>user<|im_sep|> 以及我们实际输入内容之后的 <|im_end|><|im_start|>assistant<|im_sep|> 共 7 个特殊 token,而 API 返回的总 token 是 42,而我们这里看到的是 43 个,这是因为最后一个 token <|im_end|> 并不包含在内,这将作为下一轮对话的附加内容,即 completion_tokens 实际上只包含模型实际的应答内容,而不包含其他特殊 token,之所以这样安排,是因为这涉及到费用计算的问题,因为我们的输入 token 和 LLMs 响应内容的计价不同,以此处的 gpt-4o 为例,输入/输出分别是 2.5/10 美元,这里都是指每百万 tokens 的价格,相差 4 倍。


2.2 对话图解

如果我们此时新建一个聊天窗口,一切又会重新开始,即将会话中的 token 清空,一切又从头开始。现在我们与模型对话时的示意图是这样的:

当我们点击“新聊天窗口”时,就开启了一个新的 token 序列。作为用户,我们可以将 token 写入此流中,然后当我们按下回车键时,控制权就转移给了语言模型。语言模型会以它自己的 token 流作为响应。语言模型有一个特殊的 token,基本上是在表达类似“我完成了”的意思。因此,当它发出那个特殊 token 时,ChatGPT 应用程序将控制权交还给我们,我们可以进行下一轮对话。我们共同构建这个 token 流,也就是我们所说的 上下文窗口。所以,上下文窗口有点像这些 token 的工作记忆,任何在这个上下文窗口内的内容都像是这次对话的工作记忆,模型可以非常直接地访问它。

那么,我们正在与之对话的这个实体究竟是什么?又该如何理解它呢?其实,我们之前视频中已经看到,这个语言模型的训练过程分为两个主要阶段:预训练阶段和后训练阶段。预训练阶段有点像把整个互联网的内容切分成一个个 token,然后压缩成一个类似压缩包的文件。但这是一个有损且概率性的压缩文件,因为我们无法用一个仅约 1TB 大小的压缩文件来完整呈现整个互联网的信息量——数据实在太过庞大。所以我们只能在这个压缩文件中捕捉到整体印象或大致氛围。

实际上,这个压缩文件里包含的是神经网络的参数。举个例子,一个 1TB 大小的压缩文件大约对应着神经网络中一万亿个参数。而这个神经网络的主要功能是接收输入的 tokens,并尝试预测序列中的下一个 token。但它是在互联网文档上这么做的,所以它有点像是一个互联网文档生成器,在预测互联网上序列中的下一个 token 的过程中,神经网络获得了大量关于世界的知识。这些知识都被表示、填充并压缩在这个语言模型大约一万亿个参数中。

现在我们也看到预训练阶段相当昂贵。因此,这可能会花费数千万美元,比如三个月的训练时间等等。所以这是一个成本高昂的漫长阶段。正因如此,这一阶段并不经常进行。

举个例子,我们使用的 GPT-4o 这个模型默认现在指代的还是 2024-08-06 这个版本,通过上面爱你的 API 请求返回结果中也可以印证这件事,这都大半年时间了,尽管后期在 11-20 也释放了一个新的版本,这就是为什么这些模型有点过时,它们有一个所谓的知识截止日期,因为这个截止点对应的是模型预训练的时间,它的知识只更新到那个时间点。

模型后加上日期是一种常用的方式,带通常会存在一个不带有时间信息的名字,如 gpt-4o,它类似一个指针,实际上目前指代的是 2024-08-06 这个版本,后续有可能会自动切换到 2024-11-20 版本上,因此如果你在项目中直接使用 ‘gpt-4o’ 可能会在一段时间内发生底层模型切换,导致行为不一致的情况,因为每一版本的模型使用的训练数据或训练方法不尽相同,因此如果某一版本的模型是你比较青睐的,请直接使用带有时间戳的具体模型名称;当然如果一致性不是你关心的问题,则可以一直使用 ‘gpt-4o’ 这样你总是在使用相对最新的版本。

现在有些知识可以通过后训练阶段进入模型,这一点我们稍后会谈到。但大致来说,你应该把这些模型想象成有点过时的东西,因为预训练成本太高且不常进行。所以任何近期信息,比如你想和模型讨论上周发生的事情,我们就需要通过其他方式向模型提供这些信息,因为这些内容并没有存储在模型的知识库中。所以我们会使用各种工具来为模型提供这些信息。

在预训练之后,第二阶段就是后训练。而后训练阶段实际上就是给这个压缩文件加上一个笑脸表情。因为我们不想生成互联网文档,我们希望这个东西能扮演一个回应用户查询的助手角色。而这正是通过后训练过程实现的,我们将数据集替换为由人类构建的对话数据集。这基本上就是模型获得这种角色特性的过程,这样我们就能提出问题并得到回答。

因此,它采用了助手的风格,这是通过后训练实现的,但它拥有整个互联网的知识,这是通过预训练获得的。现在我认为这部分需要重点理解的一点是,默认情况下,你正在与之交谈的是一个完全独立的实体。

这个语言模型,你可以把它想象成磁盘上的一个 1TB 文件。实际上,它代表着神经网络内部的一万亿个参数及其精确设置,这些参数正试图为你生成序列中的下一个 token。但这是一个完全自包含的实体,没有计算器,没有计算机和 Python 解释器,没有浏览器功能,也没有任何工具使用——至少在我们目前讨论的范围内还没有这些功能。你正在与一个压缩文件对话,如果你向它传输 tokens,它也会以 tokens 回应。这个压缩文件既包含预训练中获得的知识,又具备后训练形成的风格与形式。大致上,你可以这样理解这个实体的运作方式。

翻译:“嗨,我是 ChatGPT。我是一个 1TB 大小的压缩文件。我的知识来源于互联网,大约半年前读过,现在只记得个大概。我讨人喜欢的性格是由 OpenAI 的人类标注员通过示例编程出来的 😃”

所以个性是在后训练阶段编程进去的,而知识则是在预训练期间通过压缩互联网获得的,这些知识有点过时,而且是概率性的,稍微有点模糊。互联网上经常被提及的事物,会比那些鲜有讨论的内容记得更清楚,这与人类的记忆模式非常相似。


  1. leaderboard: https://lmarena.ai/leaderboard ↩︎

  2. seal leaderboards: https://scale.com/leaderboard ↩︎

相关文章:

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...

华为OD机考-机房布局

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号&#xff08;第三种&#xff09;后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...

【Linux】Linux 系统默认的目录及作用说明

博主介绍&#xff1a;✌全网粉丝23W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1&#xff09;准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2&#xff09;服务端安装软件&#xff1a;bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下&#xff0c;限制某个 IP 的访问频率是非常重要的&#xff0c;可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案&#xff0c;使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用&#xff1a; 方法一&#xff1a;使用 Homebrew 安装 Git&#xff08;推荐&#xff09; 步骤如下&#xff1a;打开终端&#xff08;Terminal.app&#xff09; 1.安装 Homebrew…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...

【C++进阶篇】智能指针

C内存管理终极指南&#xff1a;智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为&#xff1a;一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的&#xff0c;可以通过集中管理和高效资源的分配&#xff0c;来支持多个独立的网站同时运行&#xff0c;让每一个网站都可以分配到独立的IP地址&#xff0c;避免出现IP关联的风险&#xff0c;用户还可以通过控制面板进行管理功…...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树&#xff1f; 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持&#xff1a; 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序&#xff08;Program&#xff09; 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...