从0开始学习语言模型--Day02-如何最大化利用硬件

如何利用硬件

这个单元分为内核、并行处理和推理。

内核(Kernels)

我们说的内核一般指的就是GPU,这是我们用于计算的地方,一般说的计算资源就指的是GPU的大小。我们模型所用的数据和参数一般存储在内存里,假设把内存比喻为仓库,GPU比喻为工厂,那么我们所要做的就是最大限度提高数据在仓库和工厂之间运输的效率,像我们常说的矩阵乘法、融合或分块等算法都是在减少数据运输的成本。

并行处理(parallelism)

就如字面意思一样,多个GPU连接着一个个CPU,彼此并行传输数据,我们需要思考如何防止模型参数、激活值(模型在处理输入数据时,每一层神经网络的中间输出结果。这些值反映了模型在特定层对输入信息的非线性变换结果,是模型理解和生成文本的关键中间状态)或梯度来提高运输效率,与内核的本质是一样的,只是这个的关键在于并行链接的处理方式。

推理(inference)

推理指的是我们实际使用模型的方式,指的是在给定提示的情况下完成生成提示词的任务。推理的成本比训练模型的成本大得多,后者是一次性成本,而前者伴随着模型使用者的增多,需要不断地提高推理的高效,这就需要不断地投入成本。推理分为两个阶段:预填充和解码。预填充阶段,模型会根据提示词,运行得到一些激活值,然后在解码阶段自回归地生成一个个词元(token)。在推理中,比较困难的就是解码阶段,因为是一次生成一个token,这很难让我们的并行处理的GPU进行饱和式的运行,在这里会浪费一些资源,同时由于不断地移动数据,进一步地放大这种损失。当然,我们可以选择一些快速推理模型来降低1成本浪费,比如推理型解码,通过预设一些tokens,假设这些是我们需要的或通过评分认为这些是好的,就全部接受,从而省去了生成一部分token所花费的资源。

在构建这些部分的过程中,我们要养成总是进行基准测试和性能分析的习惯。因为在过程中我们可以写想要实现的任何一个功能,但我们需要反馈来确定进展在哪个阶段以及定位瓶颈,也就是上限在哪里,以便我们确认我们构筑的方向是对的以及处理好一些细节来提高上限。

缩放法则(scaling laws)

之前我们说到过理想情况是在小规模上做实验并弄清楚问题,然后预测大模型下的超参数和损失。这里会引出一个基本问题,假设给出一个浮点运算预算,应该用多大的模型。如果使用更大的模型,就意味着可以在更少的数据上训练,相反则是可以在更多的数据上训练。那么该如何找到这里的平衡点呢?我们一般会根据一个经验法则去判断:假定有一个大小为n的模型,那么将n乘以20,得到的结果就是我们要训练的token的数量。当然这里指的是如何训练出最佳的模型,而不是最划算的模型,是忽略了模型的推理成本的。

数据

即使我们做好了架构,调试好了参数,但模型会用于做什么还是取决于我们输入的数据。如果是多语言数据,那么训练出的就是多语言模型,输入的是代码数据,训练出的就是代码模型。那么我们该如何评估模型的能力呢。这就需要用到困惑度指标、标准化测试、跟随回复以及其他的一些包括评估整个模型的方法。

讨论完了评估,我们继续回溯,就到了如何筛选要训练的数据了。毕竟我们平时练习用到的数据,很多都是别人处理好的,不管是在网站爬取的统计数据,还是网页上的文本,都是需要进行大量的细节操作来进行筛选的,以确保数据尽可能多保留我们想要的信息的前提下(一般会用到分类器来过滤掉垃圾信息,以及用去重来保证信息的唯一性,不让模型重复识别某类信息),更好地被模型识别。

在经历了这么多步骤后,我们就得到了一个可以预测下一个token的基础模型。我们会通过对齐(通过技术手段使得模型的输出是符合我们期望的)的操作来满足三件事:让语言模型的能够跟随指令去生成对应的token;确定模型的风格;模型能够拒绝回答一些性质是有害的问题。对其一般分为两个阶段,一个是监督微调,通过少数的数据(一般在一千个就可以让模型可以跟随指令了)来达成好的学习效果,另一个是让模型去学习偏好的数据。即给定问题让模型去回答,并让用户给回答打分,从而得到偏好数据让模型去学习。最后是在这些数据的基础上,应用算法,让模型进行真正的训练以拥有对应的功能。

学习来源于B站教程:【斯坦福大学 • CS336】从零开始构建语言模型 | 2025 年春季_哔哩哔哩_bilibili

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/news/909506.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ElasticSearch配置详解:设置内存锁定的好处

什么是内存锁定 "bootstrap": {"memory_lock": "true" }内存锁定是指将Elasticsearch的JVM堆内存锁定在物理内存中,防止操作系统将其交换(swap)到磁盘。 内存交换是操作系统的虚拟内存管理机制,当…

成功解决 ValueError: Unable to find resource t64.exe in package pip._vendor.distlib

解决问题 我们在本地的命令行中运行指令"python -m pip install --upgrade pip"的时候,报了如下的错误: 解决思路 我们需要重新安装一下pip。 解决方法 步骤1: 通过执行下面的指令删除本地的pip: python -m pip uninstall pip…

仓库物资出入库管理系统源码+uniapp小程序

一款基于ThinkPHPuniapp开发的仓库物资出入库管理系统,适用于单位内部物资采购、发放管理的库存管理系统。提供全部无加密源码,支持私有化部署。 更新日志: 新增 基于UNIAPP开发的手机端,适配微信小程序 新增 字典管理 新增页面…

基于机器学习的逐巷充填开采岩层运动地表沉降预测

基于机器学习的逐巷充填开采岩层运动地表沉降预测 1. 项目概述 本报告详细介绍了使用Python和机器学习技术预测逐巷充填开采过程中地表沉降的方法。通过分析地质参数、开采参数和充填参数,构建预测模型评估地表沉降风险。 # 导入必要的库 import numpy as np import pandas…

MotleyCrew ——抛弃dify、coze,手动搭建多agent工作流

1. MotleyCrew 核心组件 - 协调器: Crew MotleyCrew 的核心是一个 “Crew” 对象,即多代理系统的指挥者。Crew 持有一个全局的知识图谱(使用 Kuzu 图数据库),用于记录所有任务、任务单元和其执行状态。 Cr…

掌握这些 Python 函数,让你的代码更简洁优雅

在 Python 编程世界里,代码的简洁性与可读性至关重要。简洁优雅的代码不仅便于自己后期维护,也能让其他开发者快速理解逻辑。而 Python 丰富的内置函数和一些实用的第三方库函数,就是实现这一目标的有力武器。接下来,就为大家介绍…

简说ping、telnet、netcat

简说 ping 和 telnet 命令的作用、用法和区别,方便理解它们在网络诊断中的用途。 🌐 ping 命令 ✅ 作用: ping 用于检测网络连通性。它通过向目标主机发送 ICMP Echo 请求 并等待回应,从而判断目标主机是否可达,并测…

基于STM32的超声波模拟雷达设计

一、雷达概述 雷达(Radio Detection and Ranging,无线电探测与测距)是一种利用电磁波探测目标位置、速度等信息的主动式传感器系统。其基本原理是发射电磁波并接收目标反射的回波,通过分析回波的时间差、频率变化等参数&#xff0…

飞书多维表格利用 Amazon Bedrock AI 能力赋能业务

背景 飞书多维表格是一款功能强大的在线数据管理与协作工具。它打破传统表格局限,将电子表格与数据库特性融合,支持看板、甘特图、表单等多种视图自由切换,可根据项目进度、任务管理等不同场景灵活展示数据。其丰富的字段类型能精准适配各类…

表格对比工具推荐,快速比对Excel文件

软件介绍 今天为大家推荐一款专为Excel用户设计的表格比较工具,简单易用,零基础也能快速掌握。 轻量高效的办公助手 Excel比较工具体积仅为11MB,占用空间小,运行流畅,适合各类电脑配置使用。 简洁明了的操作界面 软…

深入探究其内存开销与JVM布局——Java Record

Java 14引入的Record类型如同一股清流,旨在简化不可变数据载体的定义。它的核心承诺是:​​透明的数据建模​​和​​简洁的语法​​。自动生成的equals(), hashCode(), toString()以及构造器极大地提升了开发效率。 当我们看到这样的代码: …

Vue 3 九宫格抽奖系统,采用优雅的 UI 设计和流畅的动画效果

九宫格抽奖 预览地址 项目简介 这是一个基于 Vue 3 开发的现代化九宫格抽奖系统,采用优雅的 UI 设计和流畅的动画效果,为用户提供极致的抽奖体验。系统支持多种奖品配置,实时抽奖记录展示,以及完整的活动说明功能。 核心功能 …

无缝对接大疆算力平台:基于Coovally的无人机AI模型端到端优化方案

【导读】 随着无人机应用场景的快速拓展,企业对于定制化AI解决方案的需求日益迫切。大疆算力开放平台为开发者提供了专业的模型量化与部署环境,帮助开发者将训练好的AI模型高效部署至大疆无人机平台。 然而,要实现完整的AI开发闭环&#xf…

ubuntu下载CUDA cuDNN

nivida-smi查看显卡驱动版本 (一)安装CUDA cuda官网 cuda官网 下载对应版本的cuda 这个官网真不错啊,下面附上了指令 wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-ubuntu2404.pin sudo mv c…

FreeRTOS定时器

目录 1.特性2.运行环境2.1 守护任务2.2 回调函数2.3 内部源码 3.和Linux对比4.ID5.数据传输6.操作函数6.1 创建6.2 删除6.3 启动6.4 停止6.5 复位(重置)6.6 修改周期6.7 注意事项 7.示例:一般使用8.示例:定时器防抖 1.特性 定时器…

JavaScript中的迭代器模式:优雅遍历数据的“设计之道”

JavaScript中的迭代器模式:优雅遍历数据的“设计之道” 一、什么是迭代器模式? 在编程世界中,迭代器模式(Iterator Pattern)是一种经典的设计模式,它的核心思想是:为集合对象提供一种统一的访…

Debian/Ubuntu systemd coredump调试程序Crash

程序是通过systemd监管,当程序出现crash的时候,需要保存crash的日志,也就是coredump日志,按照一般做法设置coredump。而在安装有systemd服务的系统中一般都有systemd-coredump服务。 systemd-coredump 是 systemd 子系统中的一个工…

【图片转 3D 模型】北大·字节跳动·CMU携手——单图15 秒生成结构化3D模型!

​​引言:单图生成结构化 3 D 模型的技术突破​ ​ PartCrafter 由北京大学、字节跳动与卡耐基梅隆大学联合研发,是全球首个​​端到端生成结构化 3 D 网格​​的模型。它仅需单张 RGB 图像,即可在 34 秒内生成带语义分解的 3 D 部件&#xf…

零基础RT-thread第二节:按键控制

我这里依然使用的是野火开发板,F767芯片。 这一节写一下按键控制LED亮灭。 这是按键以及LED的原理图。 按键对应的引脚不按下时是低电平,按下后是高电平。 LED是在低电平点亮。 接下来是key.c: /** Copyright (c) 2006-2021, RT-Thread Development T…

《Gulp与SCSS:解构前端样式开发的底层逻辑与实战智慧》

探寻Gulp与SCSS协作的底层逻辑 Gulp,作为任务自动化的佼佼者,其核心价值在于将一系列复杂的任务,如文件的编译、合并、压缩等,以一种流畅且高效的方式串联起来,形成一个自动化的工作流。它基于流(stream&a…