昇思MindSpore技术公开课——第三课:GPT

1、学习总结

1.1Unsupervised Language Modelling

GPT代表“生成预训练”(Generative Pre-trained Transformer)。GPT模型是由OpenAI公司开发的一种基于Transformer架构的人工智能语言模型。它在大规模文本数据上进行预训练,学习了丰富的语言知识和语境,并能够执行多种自然语言处理任务。

GPT模型的核心思想是在大规模语料库上进行预训练,使其具备对语言的理解和生成能力。它采用Transformer架构,该架构利用自注意力机制来处理输入序列,使得模型能够捕捉长距离依赖关系。GPT的预训练包括自监督学习,其中模型尝试预测给定上下文中缺失的词语,从而学习语言的结构和语法。

动机

GPT 模型的动机来源于 未标注的文本数据远多于已标注的文本数据,并且对于不同的下游任务会存在不同的标注方式。

已有方法
semi-supervised learning

半监督学习(Semi-Supervised Learning)是一种机器学习范式,介于监督学习和无监督学习之间。在半监督学习中,训练数据集包含一部分带有标签的样本(有监督的数据)和一部分没有标签的样本(无监督的数据)。该方法旨在利用有限的标签样本和大量未标签样本来提高模型的性能。GPT1主要使用以下方法训练:

  • 基于大量未标注的文本数据,训练预训练语言模型
  • 使用已标注文本数据,对模型针对某一特定下游任务进行finetune,只更改output layer(线性层)

但是半监督学习面临以下问题:

  • 自然语言处理的下游任务非常多元,难以有统一的优化目标。
  • 难以将预训练模型的信息完全传递到finetune的下游任务中。

所以提出了非监督学习预训练模型,模型结构如下:
由于训练objective的选择,gpt在模型选择上不应该看见当前token后的信息,故模型应设计为单向网络,即transformer中的decoder结构。
在这里插入图片描述

2、学习心得

Supervised Fine-Tuning

Supervised Fine-Tuning(有监督微调)是一种机器学习中的训练策略,通常用于对预训练模型进行进一步调整以适应特定任务。这方法主要应用在迁移学习的背景下,其中模型首先在一个大规模的任务上进行了预训练,然后通过微调在特定任务上进行优化。

在已经预训练好的GPT上额外加一层线性层
在这里插入图片描述
并通过缩小目标与计算结果的误差进行模型优化
在这里插入图片描述
最终为加速模型收敛及提高模型的泛化性,融入pretrain时language modelling的优化目标
在这里插入图片描述

心得:

在GPT课程的学习过程中,我对自然语言处理和大模型的工作原理有了更全面的认识。通过深入学习GPT模型,我理解了预训练和微调的重要性,以及如何利用大规模文本数据让模型学到通用的语言表示。课程中的实践项目——使用GPT Finetune 完成一个Task,使用IMDb数据集,通过finetune GPT进行情感分类任务。加深了对模型训练和调整的实际操作经验。

总的来说,GPT这一节课程的学习让我受益匪浅。不仅拓展了对人工智能和大模型的理解,还提升了在实际项目中应用这些知识的能力。这门课程为我未来在人工智能领域的发展奠定了坚实的基础,激发了我对这一领域的兴趣和探索欲望。

3、经验分享

使用GPT Finetune 完成一个Task

在模型finetune中,需要根据不同的下游任务来处理输入,主要的下游任务可分为以下四类:

  • 分类(Classification):给定一个输入文本,将其分为若干类别中的一类,如情感分类、新闻分类等;
  • 蕴含(Entailment):给定两个输入文本,判断它们之间是否存在蕴含关系(即一个文本是否可以从另一个文本中推断出来);
  • 相似度(Similarity):给定两个输入文本,计算它们之间的相似度得分;
  • 多项选择题(Multiple choice):给定一个问题和若干个答案选项,选择最佳的答案。
    在这里插入图片描述
    本次实践使用IMDb数据集,通过finetune GPT进行情感分类任务。

4、课程反馈

在学习GPT课程的时候,跟着课程内容实践代码课程,导入mindnlp库的时候报错,具体是运行以下代码的时候:

import osimport mindspore
from mindspore.dataset import text, GeneratorDataset, transforms
from mindspore import nnfrom mindnlp import load_dataset
from mindnlp.transforms import PadTransform, GPTTokenizerfrom mindnlp.engine import Trainer, Evaluator
from mindnlp.engine.callbacks import CheckpointCallback, BestModelCallback
from mindnlp.metrics import Accuracy

报错:

ImportError: cannot import name 'Truncate' from 'mindspore.dataset.text' (/home/ma-user/anaconda3/envs/MindSpore/lib/python3.7/site-packages/mindspore/dataset/text/__init__.py)

我在启智社区创建的调试环境,镜像是
mindspore_2.0.0_notebook,使用pip 命令下载了mindnlp,但还是报错。

报错二:ImportError: cannot import name ‘GPTTokenizer’ from ‘mindnlp.transforms’ (/opt/conda/lib/python3.7/site-packages/mindnlp/transforms/init.py)
在这里插入图片描述
暂时还没有解决办法。

安装mindnlp时报错:

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
transformers 4.35.0 requires tokenizers<0.15,>=0.14, but you have tokenizers 0.15.0 which is incompatible.

解决办法:
降低tokenizers版本:

pip install tokenizers==0.14.0

希望技术公开课的实验部分可以写清楚需要的环境和MindSpore版本是什么,以及跑通代码所需的依赖。

5、使用MindSpore昇思的体验和反馈

在学习MindSpore技术公开课的时候,我喜欢MindSpore昇思的设计理念,特别是其支持全场景、全流程AI开发的灵活性。其采用了图模型的思想,使得模型构建更直观,易于理解。同时,MindSpore昇思提供了丰富的工具和功能,如自动微分、模型并行训练等,使得深度学习任务的实现更加便捷和高效。然后MindSpore的安装命令也非常简洁,在启智社区还有对应的MindSpore镜像版本可以使用,非常方便学习。

6、未来展望

通过深入学习大模型的可成——GPT的原理和应用,我在自然语言处理和文本生成领域的理解更加深刻。掌握了预训练和微调等关键技术,我能够更有效地利用大规模数据训练模型,提高在特定任务上的性能。

在科研方面,课程使我更加了解人工智能领域的最新进展,尤其是大型预训练模型在语言理解、生成和其他复杂任务上取得的显著成果。这启发了我在未来研究方向的选择,促使我更深入地探索和应用先进的深度学习技术。

基于课程学到的知识,我对人工智能和大模型的发展和应用充满了期待。我相信随着技术的不断进步,大模型将在更多领域展现出强大的能力,如医疗、自动驾驶、智能推荐等。

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

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

相关文章

Nginx 简介

1、概念介绍 Nginx ("engine x") 是一个轻量级、高性能的 WEB 服务器软件和反向代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的&#xff0c;第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。其将源代码以类 BSD 许可证的形式发…

k8s---对外服务 ingress

目录 目录 目录 ingress与service ingress的组成 ingress-controller&#xff1a; ingress暴露服务的方式 2.方式二&#xff1a;DaemonSethostnetworknodeSelector DaemonSethostnetworknodeSelector如何实现 3.deploymentNodePort&#xff1a; 虚拟主机的方式实现http代…

Windows 下 PYQT开发环境的搭建:

(1)环境搭建&#xff1a; PYQT 安装包&#xff1a; Anaconda&#xff1a; Anaconda3-2023.09-0-Windows-x86_64 pycharm&#xff1a; pycharm 2019.3 下载包&#xff1a; Anaconda:下载成功 |蟒蛇 (anaconda.com) pycharm: pycharm安装包_pycharm用copilotchat资源-CSD…

Servlet 预览pdf

一、背景 上篇文章介绍了图片的预览&#xff0c;这篇我们介绍下 pdf 文件的预览&#xff0c;pdf 预览在实际开发中用的还是比较多的&#xff0c;比如很多文件协议、合同都是用pdf 格式&#xff0c;协议预览就需要我们做 pdf 预览了。 二、实操 其实在上篇文章最后已经说了常用…

Springboot+vue的智能家居系统(有报告),Javaee项目,springboot vue前后端分离项目

演示视频&#xff1a; Springbootvue的智能家居系统&#xff08;有报告&#xff09;&#xff0c;Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的智能家居系统&#xff0c;采用M&#xff08;model&a…

2.4 网络层01

2.4 网络层01 2.4.1 网络层概述 网络层的主要任务是实现网络互连&#xff0c;进而实现数据包在各网络之间的传输。 异构网络内部的计算机要想实现通信是不需要实现网络互联的&#xff0c;异构网络之间要想实现通信就必须实现网络互连。 路由器工作在五层协议体系结构的网络…

Kafka-消费者-KafkaConsumer分析

与KafkaProducer不同的是&#xff0c;KafkaConsumer不是一个线程安全的类。 为了便于分析&#xff0c;我们认为下面介绍的所有操作都是在同一线程中完成的&#xff0c;所以不需要考虑锁的问题。 这种设计将实现多线程处理消息的逻辑转移到了调用KafkaConsumer的代码中&#x…

UML-顺序图

提示&#xff1a;用例图从参与者的角度出发&#xff0c;描述了系统的需求&#xff08;用例图&#xff09;&#xff1b;静态图定义系统中的类和对象间的静态关系&#xff08;类图、对象图和包图&#xff09;&#xff1b;状态机模型描述系统元素的行为和状态变化流程&#xff08;…

QT上位机开发(不同场景下界面的设计模板)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 qt由于其优秀的跨平台属性&#xff0c;几乎成了嵌入式开发界面开发的标配。同时呢&#xff0c;由于它在windows平台开发出来的效果也是非常的好&am…

微信小程序+前后端开发学习材料2-(视图+基本内容+表单组件)

学习来源 视图 1.swiper 滑块视图容器。其中只可放置swiper-item组件&#xff0c;否则会导致未定义的行为。 显示面板指示点indicator-dots 基础内容 1.icon 图标组件 实例演示 2.progress 进度条。组件属性的长度单位默认为px&#xff0c;咱用rpx。 实例演示 这…

【运维】WSL1如何升级到WSL2

升级WSL1到WSL2&#xff1a;简便快捷版 在这篇博客中&#xff0c;我们将研究如何通过一种更简便的方式&#xff0c;将WSL1迅速升级到WSL2&#xff0c;避免官方文档的繁冗步骤。如果你觉得官方方法太过冗长&#xff0c;那么这里提供的步骤可能更适合你。 官网的办法是&#xf…

如何解决分支机构无法连入总部采购管理系统的难题

案例背景&#xff1a; 某企业业务规模不断壮大&#xff0c;内部采购流程越发复杂&#xff0c;供应商资质情况各异难以管理&#xff0c;为提高内部采购效率和采购品质&#xff0c;优化供应链管理&#xff0c;确保采购环节公正透明可溯&#xff0c;该企业集中化部署了采购管理系…

AJAX入门到实战,学习前端框架前必会的(ajax+node.js+webpack+git)(八)

16.什么是webpack? 压缩&#xff1a;把代码文件的体积缩小 整合&#xff1a;把多个CSS文件、JS文件整合成一个&#xff0c;减少用户浏览器的http请求次数&#xff0c;从而让用户更快访问我们的网页 转译&#xff1a;less、sass转换成css&#xff0c;高版本js降级处理等 时间…

Tomcat启动后无法访问主页

1、确认JDK和Tomcat环境变量配置没有问题后&#xff0c;startup启动Tomcat 2、输入localhost:8080显示无法访问 3、找到Tomcat安装目录下的conf目录 4、修改下面两个地方&#xff0c;将port改成8081 <Connector port"8081" protocol"HTTP/1.1"connect…

vue3 实现简单计数器示例——一个html文件展示vue3的效果

目的&#xff1a;作为一个新手开发&#xff0c;我想使用 Vue 3 将代码封装在 HTML 文件中时&#xff0c;进行界面打开展示。 一、vue计数示例 学了一个简单计数器界面展示&#xff0c;代码如下&#xff1a; <!DOCTYPE html> <html lang"en"><head&…

PXE和kickstart无人值守安装

PXE高效批量网络装机 引言 1.系统装机的引导方式 启动 操作 系统 1.硬盘 2.光驱&#xff08;u盘&#xff09; 3.网络启动 pxe 重装系统&#xff1f; 在已有操作系统 新到货了一台服务器&#xff0c; 装操作系统 系统镜像 u盘 光盘 pe&#xff1a; 小型的 操作系统 在操…

rust跟我学七:获取外网IP地址

图为RUST吉祥物 大家好,我是get_local_info作者带剑书生,这里用一篇文章讲解get_local_info是怎么获取到本机的外网IP地址。 首先,先要了解get_local_info是什么? get_local_info是一个获取linux系统信息的rust三方库,并提供一些常用功能,目前版本0.2.4。详细介绍地址:[…

渗透测试(13)- 费解的三次握手和四次挥手

上一篇文章通过wireshark抓包工具简单了解了TCP/IP协议的五层工作模型&#xff0c;其中传输层我们已经知道主要是用来增加端口信息的。传输层主要有两种协议&#xff0c;一种是面向连接的TCP协议&#xff0c;一种是无连接的UDP协议&#xff0c;无连接的UDP协议比较好理解&#…

QT上位机开发(MySql访问)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 网上介绍的关于QT和mysql部分的内容&#xff0c;都是利用Qt自带的mysql库来实现数据读写的。但是事实上来说&#xff0c;即使不用qt带的库&#xf…

利用 ChatGPT 高效搜索:举一反三的思考方式,高效查找解决方案

文章目录 基础思路举一反三Go 语言 Web 框架延伸思考思考结论 本文只是我的一些尝试&#xff0c;基于 ChatGPT 实现系统化快速搜索某编程语言的特定领域相关包或者基于其他语言类推荐落地方案的尝试。 这篇文章中描述的方式不一定是好方式&#xff0c;但应该会有一定的启示作用…