(202431)轻松玩转书生·浦语大模型趣味 Demo笔记

大模型

机器学习或人工智能领域中参数数量巨大、拥有庞大计算能力和参数规模的模型。
出现原因:增长的数据量、计算能力的提升以及算法优化
应用领域:自然语言处理、计算机视觉、语音识别
原理:采用深度神经网络结构,如 Transformer、BERT、GPT( Generative Pre-trained Transformer )

优势:

  1. 能够捕捉和理解数据中更为复杂、抽象的特征和关系
  2. 可以提高在各种任务上的泛化能力,并在未经过大量特定领域数据训练的情况下实现较好的表现

挑战:巨大的计算资源需求、高昂的训练成本、对大规模数据的依赖以及模型的可解释性

大模型的应用和发展也需要在性能、成本和道德等多个方面进行权衡和考量。

模型介绍

InternLM 模型

开源的轻量级框架

优势:通过单一的代码库,它支持在拥有数千个 GPU 的大型集群上进行预训练,并在单个 GPU 上进行微调,同时实现了卓越的性能优化。在 1024 个 GPU 上训练时,InternLM 可以实现近 90% 的加速效率。

Lagent

一个轻量级、开源的基于大语言模型的智能体(agent)框架

优势:支持用户快速地将一个大语言模型转变为多种类型的智能体,并提供了一些典型工具为大语言模型赋能。通过 Lagent 框架可以更好的发挥 InternLM 的全部性能。

模型Demo实操

参考链接:https://github.com/InternLM/Tutorial/blob/main/helloworld/hello_world.md

InternLM-Chat-7B 智能对话 Demo

准备环境 ->准备代码(拉取模型) ->终端运行/web运行

运行结果
  1. 终端运行

    这里我让robot以朋友的身份安慰一个上班族。
    在这里插入图片描述

  2. web运行

    讲了一个300字的小故事
    在这里插入图片描述

Lagent 智能体工具调用 Demo

准备环境 ->准备代码(拉取模型) ->修改部分代码->终端运行/web运行

bug

在这里插入图片描述
ModuleNotFoundError: No module named ‘lagent’

可能是lagent没有安装成功吧,似乎复制的时候没有加一个.,重新装了一下就好了。在这里插入图片描述

运行结果

在这里插入图片描述

浦语·灵笔图文理解创作 Demo

准备环境->下载模型->准备代码->在终端运行

bug

在这里插入图片描述

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.
triton 2.0.0 requires cmake, which is not installed.
triton 2.0.0 requires lit, which is not installed.

按照指示安装一下cmake和lit:

pip install cmake
pip install lit

但是最后加载出来一个没有ui的页面:

在这里插入图片描述

试了很多方法都没用:

  1. 重下gradio

  2. 按照它的指示操作下载了一个文件并上传到它的地址了
    在这里插入图片描述

  3. 重新配置密钥好像也没有用

最后在z同学的帮助下,我知道了是怎么一回事了。还是密钥的问题。

我之前是按照文档上面的操作去配置密钥的,但是只是依葫芦画瓢,而且在前面两个demo中都表现得好好的,虽然并不知道为什么要这样做,但是也没有很怀疑这个问题,况且它只是界面有问题,但是能显示内容只是ui有问题的话我想终归还是连上了远程的服务器的==

但是z同学跟我说完这个问题之后我就比较关注密钥的问题了。

配置完密钥之后,在cmd控制台页面输入:

ssh -CNg -L 6006:127.0.0.1:6006 root@ssh.intern-ai.org.cn -p 37919

它会显示要输入密码:

在这里插入图片描述

在下图中复制密码:

在这里插入图片描述

粘贴到下面的密码处(这里是显示不出来的,但是确实是粘贴进去了)

在这里插入图片描述

一开始不知道是不是连上了远程服务器,像是卡住了一样,查阅资料后发现可以通过下面的命令来检查是否连接到了服务器:

netstat -aon | findstr :6006

显然,根据netstat命令输出结果,我们可以看到本地端口6006确实已经处于监听状态。这意味着SSH端口转发命令已经成功执行,并且系统正在等待通过该端口的连接。

在这里插入图片描述

这个端口转发设置将本地机器的6006端口转发到远程服务器ssh.intern-ai.org.cn上的同一端口(也就是127.0.0.1:6006)。因此,当我尝试访问本地机器上的6006端口时,流量会被转发到远程服务器上的相应端口。

通过这种方式可以访问运行在远程服务器上的某个服务,即能够通过访问http://localhost:6006或者http://127.0.0.1:6006来访问该服务了。

运行结果

最后访问网页的结果如下:

在这里插入图片描述
在这里插入图片描述

hugging face

bug

报错1

在这里插入图片描述

ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the ‘ssl’ module is compiled with ‘OpenSSL 1.1.0j 20 Nov 2018’.

参考链接:http://t.csdnimg.cn/yFMk9

原因:原因:requests包引入了urllib3,而新版本的urllib3 需要OpenSSL 1.1.1+以上版本,否则报错:ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+,currently the ‘ssl’ module is compiled with ‘OpenSSL 1.0.2k-fips 26 Jan 2017’. See: https://github.com/urllib3/urllib3/issues/2168,而且去官网查看的时候,发现对于1.1.1之前的版本已经不再支持了,所以需要安装新的版本用于支持。

解决:打开终端,输入下面语句

pip install urllib3==1.26.15

报错2

在这里插入图片描述

huggingface-cli: error: invalid choice: ‘download’ (choose from ‘env’, ‘login’, ‘whoami’, ‘logout’, ‘repo’, ‘lfs-enable-largefiles’, ‘lfs-multipart-upload’, ‘scan-cache’, ‘delete-cache’)

这个报错似乎试了很多方法都没有解决,于是先去了解了一下hugging face:

参考资料:抱脸-Hugging face AI模型库使用教程(快速入门) - Ai小专家的文章 - 知乎
https://zhuanlan.zhihu.com/p/651132477

在hugging face的镜像网站中是能搜到我们想要的模型的:

在这里插入图片描述

但是为什么无法用官方的 huggingface-cli 命令行工具下载呢?

如何快速下载huggingface模型——全方法总结 - padeoe的文章 - 知乎
https://zhuanlan.zhihu.com/p/663712983

这篇文章里提到huggingface_hub 依赖于 Python>=3.8,此外需要安装 0.17.0 及以上的版本,推荐0.19.0+。试一下是不是这个错误。

我的电脑里面安装了多个版本的python ,在cmd中默认是py3.7(使用python -v可以查看),因此不能简单在cmd里面直接pip install,而应该在指定版本里面pip install。

在这里插入图片描述

这里我指定在py3.9里面下载:

C:\Users\Liu\AppData\Local\Programs\Python\Python39\python.exe -m pip install -U huggingface_hub

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

最后的配置是Python==3.9,huggingdace-hub==0.19.3,但是运行之后还是报错说没有download:

在这里插入图片描述

找到了有huggingface-cli的地址,在这里cmd:

在这里插入图片描述

在命令行界面输入:

huggingface-cli download --help

发现它是有download选项的:

在这里插入图片描述

那为什么在pycharm中会报没有download的错误呢?

于是我直接在这个目录下运行:

huggingface-cli download --resume-download internlm/internlm-chat-7b --local-dir F:\\d2l\\hugging-face\\internlm

但是最后还是报错,似乎是连不上网址huggingface.co

在这里插入图片描述

于是我ping了一下huggingface.co:

在这里插入图片描述

果然连不上,于是在host文件里加入了下面的语句,访问huggingface.co时将访问它的镜像网站https://hf-mirror.com:

127.0.0.1 https://hf-mirror.com huggingface.co

在这里插入图片描述

这下可以ping通了:

在这里插入图片描述

但是还是报这个错误:

在这里插入图片描述

不知道为什么????

好像是安全证书的问题,跟了这两个教程还是没有解决问题:

http://t.csdnimg.cn/ZP9sD

https://www.cnblogs.com/zhengxianfa/p/17514349.html

决定直接访问镜像网站clone仓库了:

git clone https://hf-mirror.com/internlm/internlm-chat-7b

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述下面这个方法可行:

import os
#设置环境变量
os.environ[ 'HF_ENDPOINT' ]= 'https://hf-mirror.com'
from huggingface_hub import hf_hub_download # Load model directlyv
hf_hub_download(repo_id="internlm/internlm2-chat-7b" , filename="config.json",local_dir="internlm")

在这里插入图片描述

一些不懂的概念

  1. 支持用户快速地将一个大语言模型转变为多种类型的智能体是什么意思?能举个例子吗?

    支持用户快速地将一个大语言模型转变为多种类型的智能体意味着提供了一种机制或平台,让用户能够便捷地基于一个通用的大型语言模型(如GPT系列、BERT系列等),定制并生成具有特定功能、面向特定领域或任务的智能助手或服务

  2. WEB运行的原理是什么?为什么要用SSH?不是很懂
    由于服务器通常只暴露了用于安全远程登录的 SSH(Secure Shell)端口,如果需要访问服务器上运行的其他服务(如 web 应用)的特定端口,需要一种特殊的设置。我们可以通过使用SSH隧道的方法,将服务器上的这些特定端口映射到本地计算机的端口。

    SSH(Secure Shell)是一种网络协议,用于加密方式远程登录和操作网络设备,提供了一种安全的通过不安全网络访问另一台计算机的方法。SSH隧道是一种端口转发技术,它利用SSH连接作为传输数据的隧道,将服务器上的特定端口映射到本地计算机的一个端口上。这样,用户就可以通过访问本地计算机上的这个端口来间接访问服务器上的服务,同时利用SSH的加密特性保证了数据传输的安全性。通过SSH隧道,即使服务端口没有直接暴露给外部,用户也可以安全地访问服务器上的Web应用或其他服务,既保证了服务的可访问性,又维护了系统的安全性。

  3. 在下面的图片中Max Length、Top P、Temperature分别是什么意思?

    在这里插入图片描述

    在大型语言模型(如GPT系列)生成文本时,有几个关键的参数可以控制生成过程和输出结果的质量与多样性。这些参数包括Max Length、Top P(也称为Nucleus Sampling)、以及Temperature。

    1. Max Length(最大长度):指定了模型生成的文本的最大长度,包括所有的词或者token的数量。一个token不一定是一个单词,它可能是一个单词的一部分或者一个标点符号,具体取决于模型的训练数据和tokenization方法。
    2. Top P(Nucleus Sampling):一种基于概率的采样策略,用于从模型预测的下一个词的概率分布中选择词汇。具体来说,它首先将所有可能的下一个词按照概率高低排序,然后累加这些概率直到达到预设的阈值P(0 < P <= 1)。仅从这个累加概率达到或超过P的“核”集合中随机选择下一个词,在保证文本多样性的同时避免生成非常低概率(可能不合逻辑或不相关)的词汇。这种方法比简单的Top K采样(只从最高概率的K个词中选择)提供了更好的平衡,能够生成更加流畅和多样化的文本。
    3. Temperature(温度):调整模型预测下一个词概率分布的“锐利度”的参数。当Temperature=1时,不改变原始概率分布;当Temperature<1时,会使概率分布更加集中,即增加高概率词的权重,降低低概率词的权重;当Temperature>1时,会使概率分布更加平坦,即给低概率词更多的机会被选中。通过调整Temperature,用户可以控制生成文本的创新性和多样性。较低的Temperature倾向于生成更确定、更一致的文本,而较高的Temperature则倾向于生成更新颖、更多样化的文本。
  4. 预训练模型是什么?

    预训练方式表现在模型参数上,就是我之前已经拿一个合适的任务(这个任务可能是和很多任务有共同之处的任务)提前训练好了所有的模型参数(预训练)。我们不需要再从0开始训练所有参数了,但是针对我们目前这个任务,有些参数可能不合适,我们只需要在当前参数的基础上稍加修改(微调)就可以得到比较好的效果,这样学习时间必然会大大减小。而且,由于预训练过程和我们当前的任务不是同时进行的,所以可以提前花很长时间把几千亿乃至万万亿参数(现在应该还没)提前预训练好,以求和更多的具体任务都有重合,从而只需要我们微调就可以在各项任务达到不错的效果。预训练就像“我们读了新华字典、牛津字典后,再让我们解释一个某个字”一样神奇。


总结

感觉自己网络相关知识不清楚,导致不知道一些错误发生在哪儿,安全证书ssl的问题还没有解决

  • 20
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜菜荷包蛋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值