从词表到RLHF一镜到底训练一个大模型

news/2024/6/16 10:26:40/文章来源:https://blog.csdn.net/kingsoftcloud/article/details/137224845

第6章  如何训练大语言模型

本章节主要探讨训练大语言模型的步骤和方法论。

目前,可能大家接触的最多的模型训练方式是微调,也能收到一定程度的比较好的效果,其中有代表性的项目有Github上的Alpaca, Baize,Vicuna等。

  6.1 Pretrain 预训练

   有了微调,为什么还需要预训练,直接拿一些成熟的模型来微调不能满足吗?

 答案其实和大多数人的理解不同,绝大多数下游任务是无法通过微调来解决的,微调成功的前提的是

被微调模型的训练语料包括训练任务的种类本身和要微调的任务差距不大,最重要的是训练语料,要求预训练模型里面包含了微调训练所需要的知识。

日常的生产环境中,我们碰到的大多数问题有以下几种情况:

1-语言的不匹配,比如预训练模型是英文,微调任务是中文。

2-特定领域的专业词汇,比如医疗,生物,金融领域,这些泛知识领域或者互联网上的训练语料无法涵盖的部分。

当一个训练任务无法解决上述的问题,那么应该从预训练Pretrain开始对模型进行训练。

Pretrain实际上也分为若干个步骤。

 和微调一样,我们一般会选择一个预训练的基座模型,这个模型可以是Llama,可以是ChatGLM或者任何的开源模型,当然也可以是一个自己编辑网络架构的模型。

如果使用开源的模型比如Llama,它算是一个相对优秀的语言模型,但是它的中文表达能力,确实受到诟病,和Llama一样,大多数市面上被认可的优秀语言模型,都没有对中文部分进行充分的预训练。

6.1.1扩充词表

除了没有充分的预训练以外,第二个问题,就是词表的问题。目前的开源模型词表构成主要是由英文构成的。中文的部分几乎每一个都不是特别的完善,所以大多在预训练之前都需要进行词表的扩充,也就是扩充tokenizer的文件。

一般在如图6-1 这个文件配置里可以看到模型的词表。

图片

图6-1  词表描述文件-1

图片

图6-2 词表描述文件-2

如6-2显示,词表中的每个词对应了一个数字,这个数字就是词表的idx,也就是词的id索引,这个索引会被embedding成相关的向量来进行训练。

我们输入进embedding层的时候往往都是一些句子,所以要对句子进行分词,NLP最早有两种。

   第一是针对空格分,英文里常见,比如“I love you”,被拆成“I”, “love”, “you”。

第二是按字符分,还是“I  love you”,就被拆分成“I”,“l”,“o”“,v”,“e”,“y”“o”,“u”。

目前比较成

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

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

相关文章

Python简单应用案例——打飞机

打飞机代码:搭建界面 #codingutf-8 import pygame1. 搭建界面,主要完成窗口和背景图的显示 if __name__ "__main__":#1. 创建一个窗口,用来显示内容screen pygame.display.set_mode((480,890),0,32)#2. 创建一个和窗口大小的图片…

Hack.Summit() 2024再添亮点:Morphism CEO Cecilia Hsueh确认出席

随着Web3技术的风起云涌,区块链行业正在全球范围内以前所未有的速度崭露头角。而在这场变革的浪潮中,备受瞩目的区块链盛会——Hack.Summit() 2024区块链开发者大会,将于2024年4月9日至10日,在香港数码港拉开帷幕。这不仅标志着Ha…

剑指offer--数组中重复的数字

一.题目描述 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 算法1.排序,然后遍历,时间复杂度O(nlogn),空…

<Linux> 线程池

目录 前言: 一、线程池概念 (一)池化技术 (二)优点 (三)应用场景 二、线程池的实现 (一)线程池_V1(朴素版) (二)线…

67、yolov8目标检测和旋转目标检测算法batchsize=1/6部署Atlas 200I DK A2开发板上

基本思想:需求部署yolov8目标检测和旋转目标检测算法部署atlas 200dk 开发板上 一、转换模型 链接: https://pan.baidu.com/s/1hJPX2QvybI4AGgeJKO6QgQ?pwd=q2s5 提取码: q2s5 from ultralytics import YOLO# Load a model model = YOLO("yolov8s.yaml") # buil…

Js之运算符与表达式

运算符:也叫操作符,是一种符号。通过运算符可以对一个或多个值进行运算,并获取运算结果。 表达式:由数字、运算符、变量的组合(组成的式子)。 表达式最终都会有一个运算结果,我们将这个结果称…

解决 linux 服务器 java 命令不生效问题

在Linux系统中,当你安装Java并设置了JAVA_HOME环境变量后,你可能需要使用source /etc/profile命令来使Java命令生效。这是因为/etc/profile是一个系统级的配置文件,它包含了系统的全局环境变量设置。 但是需要注意的是,source /e…

关于github提交失败的问题

问题描述 Username for https://github.com: LAL-Better Password for https://LAL-Bettergithub.com: remote: Support for password authentication was removed on August 13, 2021. remote: Please see https://docs.github.com/get-started/getting-started-with-git/abo…

前端文件上传

介绍 在实际工作中前端相互传输文件时,前端会采用二进制,文本格式或者base64传输,要了解前端文件格式有哪些和这些格式之间怎么转换,先熟悉以下概念: files:文件对象的API,有很多对文件的操作方…

每日一题(力扣136):只出现一次的数字

利用哈希&#xff1a;时间复杂度O(n)&#xff0c;空间复杂度O(n) class Solution { public:int singleNumber(vector<int>& nums) {if (nums.size() 1){return nums[0];}unordered_map<int, int> map;int len nums.size();for (int i 0; i < len; i){if…

OpenHarmony实战:使用宏、std::bind 巧妙实现进出函数日志打印

背景 我们始终渴望了解模块的调用、时序逻辑&#xff0c;每个人都会轻易地想到在函数的入口打印一条进入 enter 相关的日志&#xff0c;在函数的出口打印一条离开 leave 相关的日志。不能有遗漏&#xff0c;我们会复制这条日志到所有关心的函数中&#xff0c;为了表明是哪个模…

备考ICA----Istio实验14---出向流量管控Egress Gateways实验

备考ICA----Istio实验14—出向流量管控Egress Gateways实验 1. 发布测试用 pod kubectl apply -f istio/samples/sleep/sleep.yaml kubectl get pods -l appsleep2. ServiceEntry 创建一个ServiceEntry允许流量访问edition.cnn.com egressgw/edition-ServiceEntry.yaml api…

HDLbits 刷题 -- Always case

学习&#xff1a; Case statements in Verilog are nearly equivalent to a sequence of if-elseif-else that compares one expression to a list of others. Its syntax and functionality differs from the switch statement in C. always (*) begin // This is a comb…

【PostgreSQL】用pgAdmin轻松管理PostgreSQL

pgAdmin 是一个功能强大的开源Web界面工具&#xff0c;专为管理和维护PostgreSQL数据库而设计。它提供了一个直观的图形界面&#xff0c;使得用户能够轻松地执行复杂的数据库操作&#xff0c;如查询、更新、导入/导出数据以及管理数据库对象等。pgAdmin 支持几乎所有的PostgreS…

gpt-llm-trainer 出炉

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

文件搜索案列 --java

目标&#xff1a; 搜索盘符下面符合要求的文件名&#xff0c;并可以选择是否打开该文件 代码&#xff1a; import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.Scanner;public class findQQ {public static void main(String[] a…

【数字孪生平台】使用 Three.js 以 3D 形式可视化日本新宿站地图

在本文中&#xff0c;我们将使用日本新宿站的室内地图数据&#xff0c;并使用 Three.js 将其进行 3D 可视化。更多精彩内容尽在数字孪生平台。 使用的数据 这次&#xff0c;我们将使用日本空间信息中心发布的“新宿站室内地图开放数据”的集成版本&#xff08;ShapeFile&#…

OSPF基本原理和概念

文章目录 背景知识OSPF协议概述&#xff1a;OSPF区域的表示OSPF 骨干区域 –区域0OSPF 非骨干区域 -非0区域OSPF的五种区域类型OSPF工作原理OSPF 的报文类型OSPF邻居表中的七个状态 总结 背景知识 一台路由设备如何获取其他网段的路由&#xff0c;并加入到路由表中 直连路由 …

python对接百度云车牌识别

注册百度智能云&#xff0c;选择产品服务。 https://console.bce.baidu.com/ 每天赠送200次&#xff0c;做开发测试足够了。 在应用列表复制 AppID , API Key ,Secret Key 备用。 SDK下载地址 https://ai.baidu.com/sdk#ocr 下载SDK文件&#xff0c;解压&#xff0c;…

【java9】java9新特性值之集合不可变实例工厂方法

Java9为集合接口List、Set、Map提供了创建不可变实例的工厂方法。这些工厂方法为便利而生&#xff0c;以简单的方式创建这些集合的不可变实例。 Java9之前创建不可变集合 在Java9之前&#xff0c;创建不可变集合通常需要通过其他方式&#xff0c;比如使用Collections.unmodif…