chatgpt技术总结(包括transformer,注意力机制,迁移学习,Ray,TensorFlow,Pytorch)
最近研读了一些技术大咖对chatgpt的技术研讨,结合自己的一些浅见,进行些许探讨。
我们惊讶的发现,chatgpt所使用的技术并没有惊天地泣鬼神的创新,它只是将过去的技术潜能结合现在的硬件最大化的发挥出来,也正因如此,旧有技术的可用性,让各大厂嗅到了快速发展的商机,纷纷跑步入场。
首先我们要了解chatgpt是一种自然语言处理模型,也可以理解为文本生成模型。在框架上chatgpt采用了transformer框架,这种框架又被称作变形金刚,因为相对于CNN只能处理空间信息,像图像处理,目标检测等。RNN只能处理时序信息,像语音处理,文本生成等,transformer对空间信息和时序信息皆可处理,而且在时序信息的处理上,相比于RNN,它可以记录和处理几千字、上万字甚至更多的文本信息(长序列信息),以及音频和视频等信息的的前后依赖关系,这是传统RNN望尘莫及的,而且transformer所具有的自注意力机制和多头注意力机制,可以强化这种依赖关系(或者说让模型更好的捕捉这种依赖关系)。
此外在训练上,chatgpt采用了预训练技术,简单理解就是,先用一些数据对模型进行初步训练,具体而言,是指用大量的无标签数据对模型进行训练,帮助模型在正式训练时可以更好的理解和处理自然语言。另一个微调技术就是在特定任务上进行有监督的训练,可以进一步提高模型的性能。具体而言就是将预训练好的模型参数作为初始状态,然后在目标任务上重新训练模型,以进一步提高模型的性能。相比起从头开始训练一个新的模型,微调技术可以在更短的时间内获得更好的结果,并且可以减少训练时间和计算资源的需求。这两项技术提高了chatgpt的泛化能力和性能。
而且chatgpt也加入了跨语言迁移学习,就是在已有的语言模型基础上,针对另一个语言的任务进行预训练,然后再将其应用到原始语言的任务中。简单理解就是,现在英文语料库中训练英文模型,再在英文模型基础上,基于中文语料库,预训练中文模型,然后将该模型应用到中文语库中。这项技术的应用扩展的chatgpt的应用场景。
最后除了主流的TensorFlow和Pytorch框架,我们还要注意一个分布式机器学习框架Ray,这让chagpt的实际训练成为了可能,chatgpt的训练包含以亿为单位的参数,其计算量过于巨大,如何提高其并行计算能力,成为学界研究的重点,chatgpt的训练需要大量的硬件,甚至不同的硬件之上协调训练,而Ray可以将不同硬件作为一个单元来管理,便于确定什么数据去哪里,处理故障等,而且解决了硬件冲突问题,可以跨越不同硬件种类包括,谷歌云、AWS 和其他处理相同问题的产品组合。并且,Ray 还将其他语言中的一个关键编程概念「actor」扩展到 Python。另外Google的JAX作为对标Ray的框架,近来也得到了大量关注。
延伸一下Ray,TensorFlow和Pytorch的联系和区别:
Ray与深度学习框架的关系:Ray 与 TensorFlow、PyTorch 和 MXNet 等深度学习框架互相兼容,在很多应用上,在 Ray 中使用一个或多个深度学习框架都是非常自然的(例如,UC Berkeley 的强化学习库就用到了很多 TensorFlow 与 PyTorch)。
一些分布式技术概念:
数据并行:数据并行是指将输入数据分成多个小批次,将这些小批次分配到不同的GPU内存进行处理。这种方法可以大大提高模型的训练速度和处理效率,并且可以帮助模型处理更大规模的输入数据。
模型并行:模型并行是指将模型分解成多个子模型,并将这些子模型分配到不同的GPU芯片上进行处理。这种方法可以提高模型的处理能力,并使其能够处理更大的数据集。
模型平行:这种方法与模型并行很相似,但是不同的是,模型平行将模型分解成多个层,并将这些层分配到不同的GPU芯片上进行处理。这种方法可以帮助模型处理更大的数据集,并提高模型的处理能力。
集群并行:集群并行是指将模型分布式地部署在多个计算机上,并将不同的计算机与GPU连接起来。这种方法可以帮助模型处理更大规模的数据集,并且可以提高模型的处理效率和速度。
整合:这种方法使用以上多种技术的组合,以达到更高的训练速度和处理效率
最后,思考不同的算法和框架在强化学习中的应用。
往期文章
1.Transformer(一)简述(注意力机制,NLP,CV通用模型)-CSDN博客
2.Transformer(二)(VIT,TNT)(基于视觉CV)_笑傲江湖2023的博客-CSDN博客
3.迁移学习(新人必看)_笑傲江湖2023的博客-CSDN博客
4.机器学习方法(一)(决策树,随机森林,线性回归,神经网络,模型评估,集成学习)概述_决策森林 神经网络_笑傲江湖2023的博客-CSDN博客
参考文献
1.ChatGPT的底层架构简介_鹤鹤的森林的博客-CSDN博客
2.ChatGPT背后的开源AI框架Ray,现在值10亿美元_Python正在输入中......的博客-CSDN博客
3.Chatgpt-3数据集处理代码和训练代码使用的主要编程语言和框架_gpt3训练数据-CSDN博客
4. Chatgpt-3 训练使用的分布式技术和框架_roxxo的博客-CSDN博客
5. pytorch和tensorflow有什么区别?_程序媛珂珂的博客-CSDN博客
6.深入剖析PyTorch和TensorFlow:理解二者的区别与联系_tensorflow pytorch_Chaos_Wang_的博客-CSDN博客
7. PyTorch & 分布式框架 Ray :保姆级入门教程_分布式自然进化策略使用pytorch和ray构建_HyperAI超神经的博客-CSDN博客
8.使用 Ray 将 PyTorch 模型加载速度提高 340 倍_单机ray比pytorch快_机器学习社区的博客-CSDN博客9.伯克利AI分布式框架Ray,兼容TensorFlow、PyTorch与MXNet-CSDN博客
10 .Ray和RLlib用于快速并行强化学习_ray.ppo-CSDN博客
11.低成本训练专属ChatGPT的开源框架LMFlow-CSDN博客
相关文章:
chatgpt技术总结(包括transformer,注意力机制,迁移学习,Ray,TensorFlow,Pytorch)
最近研读了一些技术大咖对chatgpt的技术研讨,结合自己的一些浅见,进行些许探讨。 我们惊讶的发现,chatgpt所使用的技术并没有惊天地泣鬼神的创新,它只是将过去的技术潜能结合现在的硬件最大化的发挥出来,也正因如此&am…...
vertx的学习总结4
一、异步数据和事件流 1.为什么流是事件之上的一个有用的抽象? 2.什么是背压,为什么它是异步生产者和消费者的基础? 3.如何从流解析协议数据? 1. 答:因为它能够将连续的事件序列化并按照顺序进行处理。通过将事件…...
SpringBoot心旅售票管理系统
本心旅售票管理系统采用基于JAVA语言实现、架构模式选择B/S架构,Tomcat7.0及以上作为运行服务器支持,基于JAVA、springboot、vue等主要技术和框架设计,idea作为开发环境,数据库采用MYSQL5.7以上。 采用技术: SpringBootVueMySQL...
CUDA C编程权威指南:1-基于CUDA的异构并行计算
什么是CUDA?CUDA(Compute Unified Device Architecture,统一计算设备架构)是NVIDIA(英伟达)提出的并行计算架构,结合了CPU和GPU的优点,主要用来处理密集型及并行计算。什么是异构计算࿱…...
R语言易错点(持续更新中~~)
1.R向量元素的索引(下标)是从1开始的,而非0 >x [1] 1 2 4>x[3] [1] 4 2.[]和[ [ ] ] mylist<-list(stud.id1234,stud.name"Tom",stud.marksc(10,3,14,25,19)) > mylist $stud.id [1] 1234$stud.name [1] "Tom"$stud.marks [1] 10…...
Multisim14.0仿真(二十七)基于UC3842的反激式开关电源的设计及仿真
一、UC3842简介: UC3842为固定频率电流模式PWM控制器。它们是专门为OFF−线和直流到直流转换器应用与最小的外部组件。内部实现的电路包括用于精确占空比控制的修剪振荡器、温度补偿参考、高增益误差放大器、电流传感比较器和理想适合于驱动功率MOSFET的高电流温度极…...
SpringMVC(二)@RequestMapping注解
我们先新建一个Module。 我们的依赖如下所示: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaL…...
NXP公司K60N512+PWM控制BLDC电机
本篇文章介绍了使用NXP公司提供的塔式快速原型系统来驱动控制带霍尔传感器的无刷直流电机。文章涉及的塔式快速原型系统主要包括以下四个独立板卡:1.塔式系统支撑模块(TWR-Elevator),用以连接微控制器以及周边模块;2.低…...
CAA的VS Studio安装
文章目录 一、官网下载VS Studio二、勾选如下安装信息三、更改软件安装位置四、17专业版密钥 一、官网下载VS Studio 官网下载地址: https://visualstudio.microsoft.com/zh-hans/downloads/ 下载对应版本后,以VS Studio2017为例: 二、勾…...
条件查询和数据查询
一、后端 1.controller层 package com.like.controller;import com.like.common.CommonDto; import com.like.entity.User; import com.like.service.UserService; import jakarta.annotation.Resource; import org.springframework.web.bind.annotation.GetMapping; import …...
JSP旅游平台管理
本系统采用基于JAVA语言实现、架构模式选择B/S架构,Tomcat7.0及以上作为运行服务器支持,基于JAVA、JSP等主要技术和框架设计,idea作为开发环境,数据库采用MYSQL5.7以上。 开发环境: JDK版本:JDK1.8 服务器&…...
简单走近ChatGPT
目录 一、ChatGPT整体背景认知 (一)ChatGPT引起关注的原因 (二)与其他公司的竞争情况 二、NLP学习范式的发展 (一)规则和机器学习时期 (二)基于神经网络的监督学习时期 &…...
10.3作业
#include <myhead.h> int main(int argc, const char *argv[]) { mkfifo(“./f1”,0777); mkfifo(“./f2”,0777); pid_t cpid fork(); if(0 < cpid) { int fdw open(“./f1”,O_WRONLY); int fdr open(“./f2”,O_RDONLY); char buf[128] “”; while(1) { bzero…...
Springboot中的@Import注解~
Import注解是Spring框架中的注解之一,用于导入其他配置类或者组件 Import注解的作用有以下几点: 导入其他配置类:可以使用Import注解导入其他的配置类,将其加入到当前配置类中,从而可以共享配置信息 导入其他组件&am…...
Linux 安全 - SUID机制
文章目录 一、文件权限位二、SUID简介 一、文件权限位 (1) $ ls -l text.txt -rw-rw-r-- 1 yl yl 0 Sep 28 16:25 text.txt其中第一个字段-rw-rw-r–,我们可以把它分为四部分看: -rw-rw-r--(1)- &a…...
Nginx与Spring Boot的错误模拟实践:探索502和504错误的原因
文章目录 前言502和504区别---都是Nginx返回的access.log和error.log介绍SpringBoot结合Nginx实战502 and 504准备工作Nginx配置host配置SpringBoot 502模拟access.logerror.log 504模拟access.logerror.log 500模拟access.logerror.log 总结 前言 刚工作那会,最常…...
全志ARM926 Melis2.0系统的开发指引①
全志ARM926 Melis2.0系统的开发指引① 1. 编写目的2. Melis2.0 系统概述3. Melis2.0 快速开发3.1. Melis2.0 SDK 目录结构3.2. Melis2.0 编译环境3.3. Melis2.0 固件打包3.4. Melis2.0 固件烧录3.5.串口打印信息3.6. Melis2.0 添加和调用一个模块3.6.1. 为什么划分模块…...
2024级199管理类联考之数学基础(下篇)
平面几何(平均2题) 三角形(性质、特殊三角形、全等与相似) 性质 由不在同一直线的三条线段首尾依次连接所组成的图形三条边、三个内角、三个定点三角形内角和为180度,外角和为360度,多边形的外角和为360度,n多边形的内角和为(n-2)*180度一个外角等于不相邻的两个内角之和任意…...
HTML之如何下载网页中的音频(二)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…...
【现代机器人学】学习笔记十四:中文版印刷/翻译勘误
首先声明,这个印刷/勘误并非经过官方的认可,只是我个人的粗浅的理解。如果内容有误,恳请大家谅解指正。 其实有的并不算错,只是我个人认为不太准确,在我学习过程中产生了一些小疑惑和误解。 都是一些小毛病ÿ…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...
