# 科研课堂 **Repository Path**: sev_leete/research-classroom ## Basic Information - **Project Name**: 科研课堂 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 3 - **Created**: 2024-09-18 - **Last Updated**: 2025-03-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README [TOC] # 课时一 ## 大模型初体验 ### 常见大模型在线平台 > [!NOTE] > > 下面列出了一些国内外大模型的在线使用平台,请同学们尝试注册账号并亲自体验一下大模型 - 国产大模型 - GLM:[智谱清言 (chatglm.cn)](https://chatglm.cn/main/alltoolsdetail?lang=zh) - 豆包:[豆包大模型-火山引擎 (volcengine.com)](https://www.volcengine.com/product/doubao) - 通义千问:[通义tongyi.ai_你的全能AI助手-通义千问 (aliyun.com)](https://tongyi.aliyun.com/qianwen/) - 国外大模型 - ChatGPT:[新标签页 (openai.com)](https://chat.openai.com/chat) (需要梯子、需要虚拟国外手机号,比较麻烦,感兴趣可以自行搜索相关资料) - Bing Chat:[Bing Chat | Microsoft Edge](https://www.microsoft.com/en-us/edge/features/bing-chat?form=MA13FJ) --- ### 大模型使用示例 - 提问示例: - Question 1 :如何将大象放进冰箱 - Answers : ###### 左侧回复 ChatGLM ; 右侧回复 GPT4 | ![Answer from ChatGLM](./assets/image-20240902152448320.png) | ![Answer from GPT4](./assets/image-20240902152654291.png) | | ------------------------------------------------------------ | ------------------------------------------------------------ | - Question 2 :这张图上有几只狗 - Answers: ###### 左侧回复 ChatGLM ; 右侧回复 GPT4 | ![Answer from ChatGLM](./assets/image-20240902173535729.png) | ![Answer from GPT4](./assets/image-20240902173741211.png) | | ------------------------------------------------------------ | --------------------------------------------------------- | - Question 3:如何进行二叉树的后序遍历,使用python语言实现,要求不使用递归方法 - Answers: ###### 左侧回复 ChatGLM ; 右侧回复 GPT4 | ![Answer from ChatGLM](./assets/image-20240902174010380.png) | ![Answer from GPT4](./assets/image-20240902174250266.png) | | ------------------------------------------------------------ | ------------------------------------------------------------ | - Question 4 :提取这篇文献的主要内容,格式为: 标题: 关键词: 主要研究内容: - Answers: ###### 左侧回复 ChatGLM ; 右侧回复 GPT4 | ![Answer from ChatGLM](./assets/image-20240902174627149.png) | ![Answer from GPT4](./assets/image-20240902174717993.png) | | ------------------------------------------------------------ | ------------------------------------------------------------ | > [!NOTE] > > 请同学们自行尝试使用大模型,也可自己拟定问题,让大模型来给出回复 ## 基础知识学习路线 ### Python - 无论是深度学习、目标检测、大模型开发、机器人控制,首选的编程语言都是Python语言 - python学习到能够熟练基本语法,能过够编写基本程序、定义方法、类等即可,高级用法可先不用学习,可以随课题推进逐步了解 - 学习方法推荐两种:入门书籍或入门视频(书籍名称及视频链接如下,视频其实就是这本书的随书视频,这本书可以说是python入门最快的书籍,其中对于Python知识的描述虽然不全面,但是最适合快速入门,视频全长也不是特别长) - 《Python编程:从入门到实践》 - 视频链接:[重磅来袭!超250万读者的选择:蟒蛇书《Python 编程:从入门到实践(第3版)》,最新版配套视频抢先看_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV14X4y127MT/?spm_id_from=333.337.search-card.all.click&vd_source=5aad3c0bd972b962307d23df12f5a2fa) ### 深度学习 - 首先了解什么是深度学习(可以查看以下两个视频快速认识): - [机器学习与深度学习的基本概念介绍(上)_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV16U4y1G7K1/?spm_id_from=333.337.search-card.all.click&vd_source=5aad3c0bd972b962307d23df12f5a2fa) - [机器学习与深度学习的基本概念介绍(下)_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1qP4y147PJ/?spm_id_from=333.788.recommend_more_video.-1&vd_source=5aad3c0bd972b962307d23df12f5a2fa) - PyTorch深度学习入门:[PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1hE411t7RN/?spm_id_from=333.337.search-card.all.click&vd_source=5aad3c0bd972b962307d23df12f5a2fa) - 这个视频用于入门使用比较好,PyTorch的一些常见函数都能够快速了解 - **注意,学习Pytorch过程中切忌只学理论,要注意动手实践,请配合项目实战一同学习** - 项目实践: - [利用深度学习实现验证码识别-1-CSDN博客](https://blog.csdn.net/problc/article/details/141789107) - [使用Pytorch框架的CNN网络实现手写数字(MNIST)识别 - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/112829371) - [基于卷积神经网络(cnn)的手写数字识别(PyTorch)_基于cnn的手写数字识别-CSDN博客](https://blog.csdn.net/m0_53675977/article/details/128240310?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-128240310-blog-110694933.235^v43^pc_blog_bottom_relevance_base3&spm=1001.2101.3001.4242.1&utm_relevant_index=3) - PyTorch深度学习进阶(这部分内容可先不做了解,如果有同学对深度学习技术感兴趣并愿意深入探索可通过视频进行详细学习,两个视频,前者偏重源码,后者偏重理论): - 视频: - [deep_thoughts的个人空间-deep_thoughts个人主页-哔哩哔哩视频 (bilibili.com)](https://space.bilibili.com/373596439/channel/collectiondetail?sid=57707) - [跟李沐学AI的个人空间-跟李沐学AI个人主页-哔哩哔哩视频 (bilibili.com)](https://space.bilibili.com/1567748478/channel/seriesdetail?sid=358497) > [!IMPORTANT] > > **课后小作业:在Pytorch项目实践中,给出了三个链接,同学们可以任选一个,通过学习Python、Pytorch相关内容,尝试理解代码含义,并在本地训练模型并测试** ## 论文清单 > [!NOTE] > > 下方提供一些论文,可以帮助大家了解相关技术,不用着急去阅读,跟随学习进度,学习到相关的内容再去阅读了解 **深度学习相关:** - **深度学习:**Krizhevsky A, Sutskever I, Hinton G E. Imagenet classification with deep convolutional neural networks[J]. Advances in neural information processing systems, 2012, 25. - 论文精读: - [9年后重读深度学习奠基作之一:AlexNet【论文精读·2】_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1ih411J7Kz/?spm_id_from=333.788&vd_source=5aad3c0bd972b962307d23df12f5a2fa) - [AlexNet论文逐段精读【论文精读】_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1hq4y157t1/?spm_id_from=333.788&vd_source=5aad3c0bd972b962307d23df12f5a2fa) - **Transformer**:Vaswani A. Attention is all you need[J]. Advances in Neural Information Processing Systems, 2017. - 论文精读:[Transformer论文逐段精读【论文精读】_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1pu411o7BE/?spm_id_from=333.788&vd_source=5aad3c0bd972b962307d23df12f5a2fa) **大模型相关:** - **BERT**:Devlin J. Bert: Pre-training of deep bidirectional transformers for language understanding[J].arXiv preprint arXiv:1810.04805, 2018. - 论文精读:[BERT 论文逐段精读【论文精读】_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1PL411M7eQ/?spm_id_from=333.788&vd_source=5aad3c0bd972b962307d23df12f5a2fa) - **GPT**:Ouyang L, Wu J, Jiang X, et al. Training language models to follow instructions with human feedback[J]. Advances in neural information processing systems, 2022, 35: 27730-27744. - 论文精读:[InstructGPT 论文精读【论文精读·48】_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1hd4y187CR/?spm_id_from=333.788&vd_source=5aad3c0bd972b962307d23df12f5a2fa) - **CLIP**:Radford A, Kim J W, Hallacy C, et al. Learning transferable visual models from natural language supervision[C]//International conference on machine learning. PMLR, 2021: 8748-8763. - 论文精读:[CLIP 论文逐段精读【论文精读】_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1SL4y1s7LQ/?spm_id_from=333.788&vd_source=5aad3c0bd972b962307d23df12f5a2fa) - **VIT**:Alexey D. An image is worth 16x16 words: Transformers for image recognition at scale[J]. arXiv preprintarXiv: 2010.11929, 2020. - 论文精读:[ViT论文逐段精读【论文精读】_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV15P4y137jb/?spm_id_from=333.788&vd_source=5aad3c0bd972b962307d23df12f5a2fa) **具身智能机器人相关:** - **Code as Policies**:Radford A, Kim J W, Hallacy C, et al. Learning transferable visual models from natural language supervision[C]//International conference on machine learning. PMLR, 2021: 8748-8763. - **ChatGPT for Robotics**:Vemprala S, Bonatti R, Bucker A, et al. Chatgpt for robotics: Design principles and model abilities. 2023[J]. Published by Microsoft, 2023. - **RT-2**:Brohan A, Brown N, Carbajal J, et al. Rt-2: Vision-language-action models transfer web knowledge to robotic control[J]. arXiv preprint arXiv:2307.15818, 2023. # 课时二 ## 深度学习实战(手写数字识别) ### 课上程序演示 - 主要包括**数据加载**和**模型训练** ```python import torch import torch.nn as nn import torch.nn.functional as F import torchvision.datasets as dataset import torchvision.transforms as transforms import matplotlib.pyplot as plt transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize(mean=0.5, std=0.5)]) # 加载数据 train_data = dataset.MNIST(root="F:\\Dataset\\MNIST", transform=transform, train=True, download=True) test_data = dataset.MNIST(root="F:\\Dataset\\MNIST", transform=transform, train=False) # print(len(train_data)) # print(len(test_data)) # print(train_data[0]) train_loader = torch.utils.data.DataLoader(train_data, batch_size=64, shuffle=True) test_loader = torch.utils.data.DataLoader(test_data, batch_size=64, shuffle=True) # print(len(train_loader)) # img_data, label = train_data[55555] # img_data = img_data.numpy().transpose(1, 2, 0) # std = [0.5] # mean = [0.5] # img_data = img_data * std + mean # img_data.resize(28, 28) # plt.imshow(img_data) # plt.show() class CNN(nn.Module): def __init__(self): super(CNN, self).__init__() self.conv1 = nn.Conv2d(1, 32, kernel_size=3, stride=1, padding=1) self.conv2 = nn.Conv2d(32, 64, kernel_size=3, stride=1, padding=1) self.pool = nn.MaxPool2d(2, 2) self.linear1 = nn.Linear(64 * 7 * 7, 1024) self.linear2 = nn.Linear(1024, 512) self.linear3 = nn.Linear(512, 10) # 前向传播 def forward(self, x): x = self.conv1(x) x = self.pool(F.relu(x)) x = self.conv2(x) x = self.pool(F.relu(x)) x = x.view(-1, 64 * 7 * 7) x = self.linear1(x) x = F.relu(x) x = self.linear2(x) x = F.relu(x) x = self.linear3(x) return x if __name__ == '__main__': PATH = "./mnist_cnn.pt" device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") # 神经网络 net = CNN() # 定义损失函数 crti = nn.CrossEntropyLoss() opt = torch.optim.Adam(net.parameters(), 1e-2) net = net.to(device) for epoch in range(10): running_loss = 0.0 for i, data in enumerate(train_loader, 0): inputs, labels = data[0].to(device), data[1].to(device) opt.zero_grad() # 获取输出、计算损失函数、更新优化器(模型参数) outputs = net(inputs) loss = crti(outputs, labels) loss.backward() opt.step() running_loss += loss.item() if i % 100 == 99: print('[%d, %5d] loss: %.3f' % (epoch + 1, i + 1, running_loss / 100)) running_loss = 0.0 print("训练完成") torch.save(net.state_dict(), PATH) ``` ### 课后作业 > [!IMPORTANT] > > - 安装好Anaconda环境,学会Anaconda常用指令的使用方法 > - 学会Pytorch的安装方法,熟悉常用指令、库、函数 > - **针对手写数字识别任务,训练你自己的CNN网络,理解CNN网络程序的含义,完成模型的训练、训练集图像结果预测(读取训练集的图像,使用训练好的模型预测结果,最终输出预测结果和实际标签,并可视化这张图像)** > - 本节课没有演示训练好模型的调用,自己完成上述剩余要求部分 ```python import torch import torch.nn as nn import torch.nn.functional as F import torchvision.datasets as dataset import torchvision.transforms as transforms from matplotlib import pyplot as plt transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize(mean=[0.5],std=[0.5])]) # 加载数据集 train_data = dataset.MNIST(root="F:\\Dataset\\MNIST", transform=transform, train=True, download=True) test_data = dataset.MNIST(root="F:\\Dataset\\MNIST", transform=transform, train=False) # print(len(train_data)) # print(len(test_data)) # print(train_data[1000]) train_loader = torch.utils.data.DataLoader(train_data, batch_size=64, shuffle=True) test_loader = torch.utils.data.DataLoader(test_data, batch_size=64, shuffle=True) # print(len(train_loader)) # print(len(test_loader)) # 查看图片 # img_data, label = train_data[0] # img_data = img_data.numpy().transpose(1, 2, 0) # std = [0.5] # mean = [0.5] # img_data = img_data * std + mean # img_data.resize(28, 28) # plt.imshow(img_data) # plt.show() class CNN(nn.Module): def __init__(self): super(CNN, self).__init__() self.conv1 = nn.Conv2d(1, 32, kernel_size=3, stride=1, padding=1) self.pool = nn.MaxPool2d(2, 2) self.conv2 = nn.Conv2d(32, 64, kernel_size=3, stride=1, padding=1) self.linear1 = nn.Linear(64 * 7 * 7, 1024) self.linear2 = nn.Linear(1024, 512) self.linear3 = nn.Linear(512, 10) def forward(self, x): x = self.conv1(x) x = self.pool(F.relu(x)) x = self.conv2(x) x = self.pool(F.relu(x)) x = x.view(-1, 64 * 7 * 7) x = self.linear1(x) x = F.relu(x) x = self.linear2(x) x = F.relu(x) x = self.linear3(x) return x # 模型推理 def predict_image(index): # 获取测试集中的图片和标签 img, label = test_data[index] # 将图片转移到与模型一致的设备 img = img.unsqueeze(0).to(device) # 增加batch维度 # 预测 with torch.no_grad(): output = net(img) _, predicted = torch.max(output.data, 1) # 打印预测结果 print(f"真实标签: {label}, 预测标签: {predicted.item()}") # 可视化图片 img = img.cpu().squeeze(0).squeeze(0) # 移回CPU并去掉batch和channel维度 img = img * 0.5 + 0.5 # 反归一化 plt.imshow(img, cmap='gray') plt.show() if __name__ == '__main__': PATH = './mnist_cnn.pt' device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") net = CNN() # #训练模型 # crit = nn.CrossEntropyLoss() # opt = torch.optim.Adam(net.parameters(), lr=1e-2) # # train_accs = [] # train_loss = [] # test_accs = [] # # net = net.to(device) # for epoch in range(8): # running_loss = 0.0 # for i, data in enumerate(train_loader, 0): # inputs, labels = data[0].to(device), data[1].to(device) # opt.zero_grad() # # outputs = net(inputs) # loss = crit(outputs, labels) # loss.backward() # opt.step() # # running_loss += loss.item() # if i % 100 == 99: # print('[%d, %5d] loss :%.3f' % (epoch + 1, i + 1, running_loss / 100)) # running_loss = 0.0 # # print('训练完成') # # 保存模型 # torch.save(net.state_dict(), PATH) # 测试模型推理效果 # 加载模型参数 net.load_state_dict(torch.load(PATH)) net = net.to(device) net.eval() predict_image(9999) ``` 运行结果: ![image-20240916225011052](./assets/image-20240916225011052.png) ## Transformer架构学习 在开始学习Transformer之前,首先需要了解一下RNN(循环神经网络),CNN(卷积神经网络)相关的已经在深度学习实战中了解过了,RNN一般用于处理序列(如自然语言、序列数据等),CNN一般用于处理图像 ### RNN 循环神经网络对具有序列特性的数据非常有效,它能够挖掘数据中的时序信息及语义信息,使用RNN类型的深度学习模型能够解决语音识别、机器翻译、时序分析等NLP领域的问题 - 了解RNN相关知识可以看:[史上最详细循环神经网络讲解(RNN/LSTM/GRU) - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/123211148) - 初步了解即可,不用细致研究,感兴趣也可以结合项目练习 - 了解RNN主要目的是大模型是对自然语言做处理,相当于在处理序列,且Transformer架构最开始是为了解决序列问题的 ### Attention Attention即注意力机制,是Transformer的核心模块 - 初步认识注意力机制:[注意力机制的本质|Self-Attention|Transformer|QKV矩阵_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1dt4y1J7ov/?spm_id_from=333.337.search-card.all.click&vd_source=5aad3c0bd972b962307d23df12f5a2fa) - Attention及Self-Attention: - 原理: [详解深度学习中的注意力机制(Attention) - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/379722366) - 结合程序了解:[【超详细】【原理篇&实战篇】一文读懂Transformer-CSDN博客](https://blog.csdn.net/weixin_42475060/article/details/121101749) - 可以先看这篇文章关于Self-Attention的部分 - ![image-20240911192831815](./assets/image-20240911192831815.png) - Self-Attention和Multi-Head-Attention:[MultiHeadAttention多头注意力机制的原理_多头自注意力机制-CSDN博客](https://blog.csdn.net/tostq/article/details/130156696) - 手写多头注意力:[【研1基本功 (真的很简单)注意力机制】手写多头注意力机制_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1o2421A7Dr/?spm_id_from=333.788.recommend_more_video.3&vd_source=5aad3c0bd972b962307d23df12f5a2fa) - 感兴趣可以去看代码如何写,不强制 ### Transformer - **Transformer论文**:Vaswani A. Attention is all you need[J]. Advances in Neural Information Processing Systems, 2017. - 论文精读:[Transformer论文逐段精读【论文精读】_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1pu411o7BE/?spm_id_from=333.788&vd_source=5aad3c0bd972b962307d23df12f5a2fa) - Transformer原理:[【超详细】【原理篇&实战篇】一文读懂Transformer-CSDN博客](https://blog.csdn.net/weixin_42475060/article/details/121101749) - 可以结合视频初步认识:[Transformer从零详细解读(可能是你见过最通俗易懂的讲解)_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1Di4y1c7Zm/?spm_id_from=333.880.my_history.page.click&vd_source=5aad3c0bd972b962307d23df12f5a2fa) - Transformer源码:[18、深入剖析PyTorch中的Transformer API源码_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1o44y1Y7cp/?spm_id_from=333.788&vd_source=5aad3c0bd972b962307d23df12f5a2fa)(**这个一定要看一下!!!**结合程序能够最快的认识这个模型的结构) - Encoder代码实现:[19、Transformer模型Encoder原理精讲及其PyTorch逐行实现_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1cP4y1V7GF/?spm_id_from=333.788&vd_source=5aad3c0bd972b962307d23df12f5a2fa)(**这个最好也看一下**) - Decoder代码实现:[20、Transformer模型Decoder原理精讲及其PyTorch逐行实现_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1Qg411N74v/?spm_id_from=333.788&vd_source=5aad3c0bd972b962307d23df12f5a2fa)(**这个最好也看一下**) - Masked Loss代码实现:[21、Transformer Masked loss原理精讲及其PyTorch逐行实现_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1dh411s7FW/?spm_id_from=333.788&vd_source=5aad3c0bd972b962307d23df12f5a2fa)(这个可以不看,感兴趣可以了解) > [!IMPORTANT] > > **尽量多的去学习和了解Transformer的结构及相关内容,这点非常重要!是所有大模型构建和训练的基础!** # 课时三 ## 项目版本管理工具Git的使用 ### 下载安装 - 下载(windows电脑一般选择64bit.exe文件下载,如:Git-2.46.0-64-bit.exe): - 官网:[Git (git-scm.com)](https://git-scm.com/) - 镜像:[CNPM Binaries Mirror (npmmirror.com)](https://registry.npmmirror.com/binary.html?path=git-for-windows/v2.46.0.windows.1/) - 安装 - 选择需要的组件 ![image-20240917143654975](./assets/image-20240917143654975.png) - 选择默认编辑器 ![image-20240917143726848](./assets/image-20240917143726848.png) - 一路`Next`,直到`Install` 安装完成后,鼠标右键菜单出现`Git Bash Here`和`Git GUI Here` ### Git和Gitee/Github配置 Github和Gitee(国内)是程序开源社区,许多前沿论文代码、明星项目等都可在上面下载,而想要从Github或者Gitee上下载项目,需要使用Git,并完成相应配置 - Gitee:[工作台 - Gitee.com](https://gitee.com/) - Github:[GitHub](https://github.com/) **开始配置:** - 右键打开`Git Bash Here` - 分别输入: ```bash git config --global user.name “username” git config --global user.email useremail@xx.com ``` - 配置用户名和邮箱后,使用下方命令查看配置情况: ```bash git config --list ``` - 生成SSH公钥:在`Git Bash`输入: ```bash ssh-keygen -t rsa -C *xxx@xx.com* ``` - 打开`C:\Users\User\.ssh`文件夹,里面有公钥和私钥文件 - 在Gitee中添加公钥:用记事本等编辑器打开`id_rsa_pub`公钥文件,复制其中内容,然后进入到`Gitee个人主页-个人设置-添加SSH公钥`将公钥文本复制进去,完成添加 > [!NOTE] > > Github和Gitee的公钥配置流程类似,需要使用Github时,可自行配置,公钥的作用是实现免密登录,防止每次访问/操作远程仓库时都要输入账号密码 ### 使用方法 本次课程中,**同学们只需要会使用Git从Github或Gitee上下载项目即可**,无需学习Git高级用法 (如果对Git项目管理感兴趣,可以自行学习:[尚硅谷新版Git快速入门(3h迅速掌握git)_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1wm4y1z7Dg/?spm_id_from=333.999.0.0&vd_source=5aad3c0bd972b962307d23df12f5a2fa)) **使用Git从Gitee上下载项目:** - 首先`fork`项目(如果想先保存到个人仓库的话,如果不想保存到个人仓库,只想要直接下载,也可以不fork),选择个人仓库作为目标空间: ![image-20240917161345659](./assets/image-20240917161345659.png) - 找到(fork后的)项目下载链接: ![image-20240917161101999](./assets/image-20240917161101999.png) ![image-20240917161445674](./assets/image-20240917161445674.png) - 在电脑中想要保存的位置,新建一个文件夹并进入其中,右键选择`Git Bash Here` - 在打开的`Bash`中输入下方命令等待下载完成即可: ```bash git clone xxxxxxxxxxxxxxxxxxxxxxx.git ``` > [!IMPORTANT] > > - 使用git从gitee上下载课程资料文件 > - 链接:[SEVLEETE/科研课堂 (gitee.com)](https://gitee.com/sev_leete/research-classroom) ## 大模型入门 ### 介绍 - 定义:**大模型是指具有大规模参数和复杂计算结构的机器学习模型**。这种模型通常由深度神经网络构建而成,拥有数十亿甚至数千亿个参数,大模型在各种领域都有广泛应用,如自然语言处理、计算机视觉、语音识别和推荐系统等。 - 特点: - 巨大规模:大模型包含数十亿个参数,模型大小可以达到数百GB甚至更大,超大的模型规模使得大模型有强大的表达能力和学习能力 - 涌现能力:指当模型的训练数据突破一定规模,模型突然涌现出之前小模型所没有的、意料之外的、能够综合分析和解决更深层次问题的复杂能力和特性,展现出类似人类的思维和智能。**涌现能力也是大模型最显著的特点之一**。 - 更好的性能和泛化能力:大模型通常具有更强大的学习能力和泛化能力,能够在各种任务上表现出色,包括自然语言处理、图像识别、语音识别等。 - 多任务学习:大模型通常会一起学习多种不同的NLP任务,如机器翻译、文本摘要、问答系统等,这可以使模型学习到更广泛和泛化的语言理解能力。 - 大数据训练:大模型需要海量的数据来训练,通常在TB以上甚至PB级别的数据集,只有大量的数据才能发挥大模型的参数规模优势。 - 强大的计算资源:训练大模型通常需要数百甚至上千个GPU,以及大量的实践,通常在几周导几个月。 - 迁移学习和预训练:大模型可以通过在大规模数据上进行与训练,然后在特定任务上进行微调,从而提高模型在新任务上的性能。 - 自监督学习:大模型可以通过自监督学习在大规模未标记数据上进行寻来你,从而减少对标记数据的以来,提高模型的效能 - 领域知识融合:大模型可以从多个领域的数据中学习知识,并在不同领域中进行应用型,促进跨领域的创新 - 自动化和效率:大模型可以自动化许多复杂的任务,提高工作效率,如自动编程、自动翻译、自动摘要等 - 分类: - 按照输入数据类型的不同,大模型主要分为三类:语言大模型(NLP)、视觉大模型(CV)、多模态大模型 - 语言大模型:GPT系列、Bard、文心一言等 - 视觉大模型:VIT系列、文心UFO、华为盘古CV、INTERN - 多模态大模型:DingoDB多模向量数据库、DALL-D、悟空画画、midjourney - 按照应用领域的不同,大模型主要分为L0、L1、L2三个层级 - 通用大模型L0:指可以在多个领域和任务上通用的大模型,利用大算力在大规模五标注数据上进行训练,可在不进行微调或少量微调的情况下完成多场景任务,相当于AI完成了”通识教育“ - 行业大模型L1:指针对特定行业或领域的大模型,通常使用行业相关的数据进行预训练或微调,以提高在该领域的性能和准确度,相当于AI成为”行业专家 - 垂直大模型L2:指那些针对特定任务或场景的大模型,通常使用任务相关的数据进行预训练或微调,以提高在该任务上的性能和效果 ### 训练过程 > [!NOTE] > > **这部分可以去看上课讲的ppt** - 训练tokenizer - 课上展示的文档链接: https://www.mubu.com/doc/4luPQmRRlTb 密码: 9999 - 分词粒度 - 分词算法 - 训练分词模型程序 - Transformer模型内流程(预训练) - 课上展示的文档链接: https://www.mubu.com/doc/7Fg1D5tMJnb 密码: 8888 - 词嵌入和位置编码(Input Embedding & Positional Encoding) - Encoder - Self Attention & Multi-Head Attention - Add & Norm - Decoder - Masked Multi-Head Attention - 微调和人类引导强化学习(Fine-tuning % RHLF) > [!IMPORTANT] > > - 理解课上PPT上所讲内容,搞清楚输入输出维度在Transformer模型内部是如何变化的 ## 项目分工 | 类别 | 姓名 | 职责 | | ---------- | -------- | ------------------------------------------------------- | | LLM | 张晨萧 | Agent(LangChain、LangGraph)构建、Prompt Engineering | | LLM | 谢依伟 | Agent(LangChain、LangGraph)构建、模型微调和数据集构建 | | LLM | 杨仁汉 | Agent(LangChain、LangGraph)构建、模型微调和数据集构建 | | CV & Robot | 陈浚哲 | 机器人(仿真、路径规划、末端控制等) | | CV & Robot | 伊力杜斯 | 视觉系统(数据集构建、目标检测、深度相机) | >[!IMPORTANT] > >**项目职责划分如上** > >**本周任务** > >- LLM组 > - 自己编写Python程序调用千问模型接口 > - qwen模型在线:[模型服务灵积-总览 (aliyun.com)](https://dashscope.console.aliyun.com/overview?spm=5176.28630291.0.0.3a7e7eb5QYsDuS) > - 使用说明:[产品概述_模型服务灵积(DashScope)-阿里云帮助中心 (aliyun.com)](https://help.aliyun.com/zh/dashscope/product-overview/?spm=a2c4g.11186623.0.0.6ff84ef3ua0bZT) > - 使用LangChain和qwen模型结构构建一个Agent(参考:[构建代理 | 🦜️🔗 LangChain 中文](https://python.langchain.ac.cn/v0.2/docs/tutorials/agents/)) >- CV & Robot组 > - CV > - 本地部署Yolov8 / Yolov10模型 > - 使用下载的数据集训练Yolo模型(口罩检测数据集:百度网盘: 链接:https://pan.baidu.com/s/1axAF7xY_6lkjZFvoOmFfnA 密码:tjbh) > - Robot > - 在PyBullet中搭建UR5机械臂仿真环境:机械臂、平台、末端等 > - 编写程序控制机械臂运动 # 课程阶段任务 ## 2024/10/09 > [!IMPORTANT] > > - LLM组 > > - 完成Agent构建 > > - langchain入门:[背包2004的个人空间-背包2004个人主页-哔哩哔哩视频 (bilibili.com)](https://space.bilibili.com/362734486/channel/collectiondetail?sid=2271397) > > - function call:https://www.bilibili.com/video/BV14z421r79n/?spm_id_from=333.788 > > - 手动实现ReAct:https://www.bilibili.com/video/BV1Xi421y7n3/?spm_id_from=333.788 > > - 构建自定义工具,可通过伪代码的形式模拟抓取任务分解 > > - Robot > > - PyBullet中UR5各关节的控制、末端控制、虚拟相机使用 > - UR5仿真:[UR5机械臂运动学的Python实现+PyBullet机械臂仿真_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1Fm4y1X7RJ/?buvid=Z946EE9D9FAC2B7E4EF5B874F5608F3B01A8&is_story_h5=false&mid=ozRWCkeN%2Fg%2BHcrgotnANaA%3D%3D&p=1&plat_id=116&share_from=ugc&share_medium=iphone&share_plat=ios&share_session_id=5529EDE9-4DB7-4873-94C0-D0D173641CAD&share_source=WEIXIN&share_tag=s_i&spmid=united.player-video-detail.0.0×tamp=1728454621&unique_k=4qZbMak&up_id=40344504&vd_source=5aad3c0bd972b962307d23df12f5a2fa) > > - 末端控制、虚拟相机(视频前三集):[具身智能课程-pybullt仿真器学习第一课_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV17vvee6E7U/?spm_id_from=333.788&vd_source=5aad3c0bd972b962307d23df12f5a2fa) > - 基于深度学习的平面抓取 > - 论文:GGCNN:[1804.05172 (arxiv.org)](https://arxiv.org/pdf/1804.05172) > - 代码:[ggcnn:Generative Grasping CNN from "Closing the Loop for Robotic Grasping: A Real-time, Generative Grasp Synthesis Approach" (RSS 2018) - GitCode](https://gitcode.com/gh_mirrors/gg/ggcnn/overview?utm_source=artical_gitcode&index=bottom&type=card&webUrl&isLogin=1) > - 实战:[基于深度学习的机器人平面抓取 • 王德鑫 (guyuehome.com)](https://class.guyuehome.com/p/t_pc/course_pc_detail/column/p_61c9287be4b09ac9b9113173) > - 付费课程,找我扫码登陆 > > - CV > > - 与负责Robot协商制作平面抓取数据集并训练网络抓取神经网络 > - 参考:[基于深度学习的机器人平面抓取 • 王德鑫 (guyuehome.com)](https://class.guyuehome.com/p/t_pc/course_pc_detail/column/p_61c9287be4b09ac9b9113173)中数据集制作部分 > - 付费课程,找我扫码登陆 ## 2024/10/22 > [!IMPORTANT] > > - LLM组 > > - 继续完成ReAct Agent框架构建,使用伪代码模拟工具输入输出完成机器人任务执行过程的规划和执行 > > - 相关论文: > - COT:[[2201.11903\] Chain-of-Thought Prompting Elicits Reasoning in Large Language Models](https://arxiv.org/abs/2201.11903) > - TOT:[[2305.10601\] Tree of Thoughts: Deliberate Problem Solving with Large Language Models](https://arxiv.org/abs/2305.10601) > > - 大模型微调学习(纯文本) > > - 初步认识大模型微调:[【大模型开发 】 一文搞懂Fine-tuning(大模型微调)_finetuning大模型-CSDN博客](https://blog.csdn.net/qq_39172059/article/details/136693607) > > - LoRA微调原理:[LORA微调系列(一):LORA和它的基本原理 - 知乎](https://zhuanlan.zhihu.com/p/646791309) > - 部署LLaMA-Factory并微调大模型:[微调神器LLaMA-Factory官方保姆级教程来了,从环境搭建到模型训练评估全覆盖_llamafactory教程-CSDN博客](https://blog.csdn.net/python12345678_/article/details/140346926) > - **(如果电脑GPU算力不够,可使用在线GPU资源,如阿里云GPU/揽睿星舟/AUTODL等)**,注意学习一下在线深度学习环境部署使用方法 > > - Robot > > - 理解GGCNN程序、更换UR5机器人 > - 开发机械臂、相机、末端夹爪独立控制模块 > > - CV > > - 运行起来GGCNN原本的预训练模型,理解程序 > - 使用自构建的数据集训练模型 ### 2024/10/30 > [!IMPORTANT] > > **各组同学协调,将系统集成并完成一个demo**,该demo应有的功能 > > - **能够在pybullet环境中完成基本的移动和抓取任务,例如:** > - 指令1:将机械臂移动到盘子上方 > - 指令2:把苹果抓起来 > - 指令3:把苹果放到盘子中 > [!NOTE] > > - **课上 面对面讨论,制订完成demo所需完成任务的list,确定需要哪些工具,以及工具的输入输入**(课上已组织讨论并完成) > - 课后协调完成系统(一周时间)