Skip to content

RyanWu31/2024_Shanghai_AI_lab_tutorial

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 

Repository files navigation

Tutorial_notebook

20240107for Shanghai AI lab

目录

第一节

笔记

大模型通常是指机器学习和人工智能领域中的模型,其特点是具有庞大的参数数量和强大的计算能力。这些模型通过大规模数据训练,通常包含数十亿乃至数千亿个参数,常见的结构包括Transformer、BERT、GPT等。它们在自然语言处理、计算机视觉、语音识别等领域表现出卓越性能,能够理解复杂的数据特征和关系。

开源项目InternLM是一个轻量级的训练框架,旨在支持大模型训练,同时减少对依赖的需求。它在大型GPU集群上进行预训练,并在单个GPU上进行微调,具有出色的性能优化,可实现近90%的加速效率。基于InternLM,上海人工智能实验室发布了两个开源的预训练模型:InternLM-7B和InternLM-20B。

此外,Lagent是一个开源的大语言模型智能体框架,支持将大语言模型转化为多种智能体类型,并提供了相关工具以增强大语言模型的能力。

浦语·灵笔是基于书生·浦语大语言模型开发的视觉-语言大模型,具备强大的图文理解和创作能力,可实现图像到文本和文本到图像的双向转换。它可以用于创作图文推文,同时识别图像中的物体并生成相应的文本描述。

第二节 轻松玩转书生·浦语大模型趣味 Demo

基础作业

1.300字小故事 InternLM-Chat-7B 模型生成 300 字的小故事

本机 5RMP`S$W9}Y_ZHU}@Q5B}_M webdemo

}XO2Q3T%Y(D`UT99L~X)_KE

2.下载20b 使用 huggingface_hub python 包,下载 InternLM-20B 的 config.json 文件到本地

4$JH3Z(W8MRBL8BS6X6CH 2PCA}7PZU0QJK(_)VM4(B~3 M4RH4XW@_I8VRYG`FAMVUBI

```python
import os
os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'
os.system('huggingface-cli download --resume-download internlm/internlm-20b --local-dir ./')
```

进阶作业

1.lagent demo Lagent 工具调用 Demo 创作部署

X@28Y_ (JGZ(~@@UZ9B7XQP )$V1I4)OE91LNFNVWFCJS$S

2.浦语·灵笔的图文理解及创作部署

A58S7TC6 9O5(B34PM~`DNE AMA%_ 5F QPN%XT~3(O%UGI

笔记

如果git clone失败,可以用gitee

git clone https://github.com/open-compass/opencompass
fatal: unable to access 'https://github.com/open-compass/opencompass/': Received HTTP code 503 from proxy after CONNECT   
git clone https://gitee.com/open-compass/opencompass

如果huggingface下载失败,可以用huggingface镜像

InternLM2系列模型是一系列具有卓越性能的开源模型,其主要特点如下:

200K上下文窗口:InternLM2模型具有长达200K的上下文窗口,在长文本任务如LongBench和L-Eval中表现出色,能够高效地处理大规模文本数据。

综合性能卓越:相较于上一代模型,在各个方面性能显著提升,尤其在推理、数学、编程、聊天交互、指令跟随以及创造性写作等方面,表现领先于类似规模的开源模型。在某些评估中,InternLM2-Chat-20B甚至可能与ChatGPT(GPT-3.5)媲美甚至超越。

代码解释和数据分析:InternLM2-Chat-20B通过代码解释支持GSM8K和MATH等任务,与GPT-4在性能上相当。此外,InternLM2-Chat还提供了数据分析功能。

强大的工具使用:InternLM2在指令跟随、工具选择和反思等方面具有更好的工具利用能力,支持更多类型的智能体和多步骤工具调用,适用于复杂任务。

模型大小:InternLM2系列包含两种模型规模,即7B和20B。7B模型适用于研究和应用,而20B模型更强大,能够支持更复杂的场景。

此外,该模型系列的性能表现也得到了详细的评估,包括客观评估、长文本评估、数据污染评估、智能体评估和主观评估等多个方面。

总之,InternLM2系列模型是一组性能卓越的开源模型,具有广泛的应用潜力,可用于各种任务,但仍然需要注意模型的潜在限制,如可能产生偏见、歧视或其他有害内容的风险。

7b不如chatglm3, 20b比百川13b强

第 3 节 基于 InternLM 和 LangChain 搭建你的知识库

基础作业

本机复现 5SARWN_P_UTH3{N7SJ)5`RX

进阶作业

openxlab部署 image https://openxlab.org.cn/apps/detail/RyanWu31/fin_Chat https://github.com/RyanWu31/fin_Chat 先放这回头改 不知道这个sentence transofrmer和大模型权重应该放哪 W86Z}HE5NG{8(D3G2H}NY J7M}93URS2L0@X}AV{$LUM6 9RJ VU(1UUY1CC MYJUCK

https://openxlab.org.cn/models/detail/RyanWu31/Financial_Dialogue

笔记

如果在一个局域网内,相同端口可以在不同机器上直接运行,7680端口我没做映射直接就能跑,在本机做的web_demo 这个地方直接换模型不能运行,不知道为啥,用chatglm3推理不出来 这个问题解决了,就是response的格式不一样,例如llama有统一的resposon格式

LangChain是一个用于自然语言处理任务的平台,它允许用户通过简化流程来创建和部署NLP模型,同时提供了一系列有用的工具和资源。主要功能包括:

模型训练:LangChain提供了用于训练NLP模型的工具和框架,使用户能够根据自己的需求进行模型训练。您可以选择不同的预训练模型、数据集和任务类型来定制您的模型。

模型评估:LangChain支持模型性能的客观评估,帮助用户了解模型在不同任务上的表现。您可以使用内置的评估指标来量化模型的性能。

模型部署:LangChain还允许用户将他们的训练好的模型部署到生产环境中,以便进行实际应用。这使用户可以将其NLP模型应用于各种应用程序,如聊天机器人、文本分类、情感分析等。

image

知识库就是一些文本,作为模型的先验知识

怎么找知识库? 需要遵守一些格式吗?直接把文字爬下来放那就行?

第4节 XTuner 大模型单卡低成本微调实战

基础作业

这里效果不太好,把代码放上来以后调

```python
(xtuner0.1.9) dell@dell-PowerEdge-T640:~/remote/Big_model/Shanghai_AI_lab_2024tutorial/4/xtuner019/xtuner/personal_assistant$ NPROC_PER_NODE=2 xtuner train /home/dell/remote/Big_model/Shanghai_AI_lab_2024tutorial/4/xtuner019/xtuner/personal_assistant/config/internlm_chat_7b_qlora_oasst1_e3_copy.py --deepspeed deepspeed_zero2

(xtuner0.1.9) dell@dell-PowerEdge-T640:~/remote/Big_model/Shanghai_AI_lab_2024tutorial/4/xtuner019/xtuner/personal_assistant$ xtuner convert pth_to_hf /home/dell/remote/Big_model/Shanghai_AI_lab_2024tutorial/4/xtuner019/xtuner/personal_assistant/config/internlm_chat_7b_qlora_oasst1_e3_copy.py /home/dell/remote/Big_model/Shanghai_AI_lab_2024tutorial/4/xtuner019/xtuner/personal_assistant/config/work_dirs/internlm_chat_7b_qlora_oasst1_e3_copy/epoch_20.pth /home/dell/remote/Big_model/Shanghai_AI_lab_2024tutorial/4/xtuner019/xtuner/personal_assistant/config/work_dirs/hf

(xtuner0.1.9) dell@dell-PowerEdge-T640:~/remote/Big_model/Shanghai_AI_lab_2024tutorial/4/xtuner019/xtuner/personal_assistant$ xtuner convert pth_to_hf /home/dell/remote/Big_model/Shanghai_AI_lab_2024tutorial/4/xtuner019/xtuner/personal_assistant/config/internlm_chat_7b_qlora_oasst1_e3_copy.py /home/dell/remote/Big_model/Shanghai_AI_lab_2024tutorial/4/xtuner019/xtuner/personal_assistant/work_dirs/internlm_chat_7b_qlora_oasst1_e3_copy/epoch_20.pth /home/dell/remote/Big_model/Shanghai_AI_lab_2024tutorial/4/xtuner019/xtuner/personal_assistant/config/work_dirs/hf

(xtuner0.1.9) dell@dell-PowerEdge-T640:~/remote/Big_model/Shanghai_AI_lab_2024tutorial/4/xtuner019/xtuner/personal_assistant$ xtuner convert merge /home/dell/.cache/modelscope/hub/Shanghai_AI_Laboratory/internlm-chat-7b /home/dell/remote/Big_model/Shanghai_AI_lab_2024tutorial/4/xtuner019/xtuner/personal_assistant/config/work_dirs/hf /home/dell/remote/Big_model/Shanghai_AI_lab_2024tutorial/4/xtuner019/xtuner/personal_assistant/config/work_dirs/hf_merge --max-shard-size 2GB



ll/remote/Big_model/Shanghai_AI_lab_2024tutorial/4/xtuner019/xtuner/personal_assistant/InternLM/web_demo.py --server.address 127.0.0.1 --server.port 6006

  

image 训练个20epoch还不行? image 啥情况啊,根本不带变化的 image 不如直接prompt来的快

笔记

这节问题比较多,先是小助手fine-tune没效果,说是主人的名字不能用英文,然后改成中文还是没效果。看了一下群里说的,要改max_length,还是没效果。又将epoch改成5,还是没效果,不知道为啥 可能是因为用的多卡加速?就用的两块A100,5个epoch 1个小时就训练完了。 NPROC_PER_NODE=2 xtuner train ./internlm_chat_7b_qlora_oasst1_e3_copy.py

第5节 LMDeploy 的量化和部署

基础作业 使用 LMDeploy 以本地对话、网页Gradio、API服务中的一种方式部署 InternLM-Chat-7B 模型,生成 300 字的小故事(需截图)

本地对话 image image

笔记

模型量化:模型量化是将浮点数模型参数转换为整数的过程,从而减小模型的内存占用和计算量。在LMDeploy中,可以使用不同的量化技术来减小模型的大小,例如权重量化和激活量化。这有助于提高模型的推理速度。

模型并行:对于大型模型,可以使用模型并行技术将模型分成多个部分,并在多个GPU或设备上并行运行。这可以显著提高模型的推理速度,特别是在处理大批量数据时。

推理引擎优化:选择高性能的推理引擎和库可以加速模型的推理过程。LMDeploy支持多种推理引擎,包括TensorRT和ONNX Runtime,可以根据具体需求进行选择和优化。

批量推理:批量推理是指同时处理多个输入样本的推理过程。通过合理设置批处理大小,可以充分利用硬件资源,提高推理效率。

缓存机制:对于频繁请求的相同输入,可以使用缓存机制来存储模型的中间结果,以减少重复计算,提高响应速度。

硬件加速:使用高性能硬件加速器,如GPU、TPU等,可以显著提高模型的推理速度。确保部署环境中的硬件与模型兼容。

并发请求处理:考虑并发请求处理,以充分利用多核CPU或多个GPU。使用多线程或多进程来同时处理多个请求。

延迟优化:监控模型的推理延迟,并进行延迟优化。可以通过调整模型参数、缓存策略等来降低延迟。

模型剪枝:模型剪枝是去除模型中不必要的参数和连接,以减小模型大小和计算量。在LMDeploy中,可以使用剪枝技术来精简模型。

模型量化:模型量化是将浮点数模型参数转换为整数的过程,从而减小模型的内存占用和计算量。在LMDeploy中,可以使用不同的量化技术来减小模型的大小,例如权重量化和激活量化。这有助于提高模型的推理速度。

第6节 OpenCompass 大模型评测

基础作业 使用 OpenCompass 评测 InternLM2-Chat-7B 模型在 C-Eval 数据集上的性能

}{}CM 2SWVEJ AWP9KGAM

8SI%0G70N2LEU_AEYJ_UPH7

076A%NVZ5AEX4E O}BDKW`X

笔记

OpenCompass是一个多功能的NLP模型评估工具,具有以下主要特点:

客观性能评估:OpenCompass提供了多种客观性能指标,用于评估NLP模型的性能。这些指标可以用于不同类型的任务,如文本生成、文本分类、机器翻译等。

多任务支持:它支持多种不同的NLP任务,包括但不限于多选题、文本生成、回归任务等。这使得用户可以在各种任务上进行全面的性能评估。

自定义评估指标:OpenCompass还允许用户定义自己的评估指标,以便根据具体需求进行评估。这对于特定任务和应用程序非常有用。

结果可视化:OpenCompass提供了可视化工具,以直观地呈现评估结果,帮助用户更容易地理解模型的性能。

使用OpenCompass时应注意的事项:

数据质量:评估结果的质量取决于使用的数据集的质量。确保使用高质量的数据集进行评估,以获得准确的性能指标。

任务选择:根据您的需求选择合适的任务进行评估。不同的任务可能需要不同的评估指标。

模型选择:在评估时,选择合适的NLP模型是至关重要的。不同模型在不同任务上可能表现出不同的性能。

细致分析:不仅要查看总体性能指标,还应该进行细致的分析,以了解模型在不同方面的表现。这有助于发现模型的潜在问题。

比较和基准:将模型的性能与其他模型或基准进行比较,以便更好地了解模型在领域中的位置。

持续监控:性能评估应该是一个持续的过程,随着时间的推移,模型的性能可能会发生变化。因此,建议定期重新评估模型。

About

20240107for Shanghai AI lab

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published