- 博客(101)
- 收藏
- 关注
原创 LMDeploy 量化 + API 部署 | 书生大模型
InternLM2.5-7B 模型精度为 BF16(1位符号位,8位指数位,7位尾数位),根据上面的计算推导,LMDeploy 推理精度为 BF16 的 7B 模型需要使用 14GB 的显存。在最新的版本中,LMDeploy 使用的是 AWQ 算法,能够实现模型的 4bit 权重量化:(大概需要 8 小时)实际加载模型后,其他项也会占用部分显存,因此剩余显存比理论偏低,实际占用会略高于 22GB 和 34.8GB。从默认比例的 0.8 调整到 0.4 后,显存占用减少了约 4GB。
2024-11-19 17:13:33
877
原创 InternVL 多模态模型部署微调实践 | 书生大模型
多模态大模型是指能处理和融合多种不同类型数据(如文本、图像、音频、视频等)的大模型常见的 MLLMInternVLGPT-4oQwen-VLLLaVA基座模型选用 InternLM2 - Chat - 20B视觉编码器选用 InternVit - 6B对齐模块选用 MLP projector主要通过## 1.导入相关依赖包## 2.使用你的模型初始化推理管线## 3.读取图片(此处使用PIL读取也行)## 4.配置推理参数。
2024-11-15 18:40:11
1759
原创 XTunner 微调解读补充
核心:如果有 N 个并发工作的进程,ZeRO-1 会将完整的优化器状态分成 N 份,每份独立保存在不同的进程里。在反向传播完成后,每个进程只负责处理和更新它自己那部分的优化器状态。更新后的分区 FP32 主参数会通过全体汇集(All-gather)操作回传到每个进程,从而完成一轮参数的更新。ZeRO-1 主要优化了优化器状态的存储,而 ZeRO-2 在 ZeRO-1 的基础上进一步对梯度进行了分片处理。配置了用于因果语言模型的监督式微调模型,包括分词器和模型的配置,以及模型量化和参数适应的详细设置。
2024-11-13 14:50:36
800
原创 OpenCompass评测 | 书生大模型
OpenCompass 提供了API 模式评测和本地直接评测两种方式。其中 API 模式评测针对那些以 API 服务形式部署的模型而本地直接评测则面向那些可以获取到模型权重文件的情况cd /root。
2024-11-12 19:00:15
318
原创 XTuner 微调实践 | 书生大模型
在 XTuner 中提供了一键合并的命令 xtuner convert merge,在使用前我们需要准备好三个路径,包括原模型的路径、训练好的 Adapter 层的(模型格式转换后的)路径以及最终保存的路径。对于 LoRA 或者 QLoRA 微调出来的模型其实并不是一个完整的模型,而是一个额外的层(Adapter),训练完的这个层最终还是要与原模型进行合并才能被正常的使用。脚本来观察微调后的对话效果,不过在运行之前,我们需要将脚本中的模型路径修改为微调后的模型的路径。表示合并后的模型最终的保存路径。
2024-11-12 16:18:15
1065
原创 LlamaIndex RAG实践 | 书生大模型
正常情况下,其会自动从互联网上下载,但可能由于网络原因会导致下载中断,此处我们可以从国内仓库镜像地址下载相关资源,保存到服务器上。**Streamlit 是一个用于快速创建数据应用程序的 Python 库。也可以选用别的开源词向量模型来进行 Embedding。创建新的 conda 环境,命名为。
2024-11-11 20:00:41
596
原创 多模态对话与 AI 搜索产品 | 书生大模型
书生·浦语:基于原生 InternLM2.5 最新 Chat 模型 (InternLM2.5-20B) 搭建聊天机器人应用(默认开放 3 百万 Tokens/月的 API 调用额度)MindSearch:开源的 AI 搜索引擎 (框架),基于多智能体技术将你提出的问题进行分析、拆解、网页搜索,最终给出有参考依据的高可信度回答。书生·万象:InternVL 开源模型的官方产品,原生支持图文多模态对话能力。
2024-11-11 11:02:37
321
原创 Hugging Face 平台轻松上手 | 书生大模型
Github CodeSpace 是 Github 推出的线上代码平台,提供了一系列 templates,我们这里选择 Jupyter Notebook 进行创建环境。创建好环境后,可以进入网页版 VSCode 的界面,这就是 CodeSpace 提供给我们的在线编程环境。考虑到个人 GitHub CodeSpace 硬盘空间有限(32GB可用),而 7B 的模型相对较大,这里我们先演示如何下载模型文件夹的特定文件。因为网络和磁盘有限的原因,强烈不建议在 InternStudio 运行,因此这里使用。
2024-11-07 22:25:48
335
原创 在 InternStudio 平台使用 Git | 书生大模型
【大家可以叫我】:老麻花【坐标】:南京【专业/职业】:计算机技术【兴趣爱好】:羽毛球【项目技能】:前端、后端、LLM【组队情况】:未组队,快来一起!【本课程学习基础】:LLM【本期活动目标】:随机漫步。
2024-11-07 15:52:26
423
原创 InternStudio 平台进阶使用 | 书生大模型
有时我们会遇到想将整个虚拟环境保存到制定目录来共享,比如在局域网内,或者在 InternStudio 的团队开发机间共享。此时我们可以把 conda 的虚拟环境创建到指定目录下。这个文件夹里包含了整个虚拟环境,所以理论上将他直接拷贝到任意一台安装了 conda 的机器上都能直接激活使用,这也是在内网机器上做环境配置的一种效率较高的解决方案。想要激活保存在制定目录下的conda虚拟环境也十分简单,直接将环境名替换成所在文件夹就行。参数制定环境所在的文件夹即可,比如我们想在。路径下创建刚刚我们创建过得。
2024-11-07 00:21:36
644
原创 一文搞定 InternStudio 开发机的使用 | 书生大模型
配置文件这一块默认就好:然后在右下角弹出来的提示窗口中点击“连接”就可以远程到开发机中了。
2024-11-05 17:37:16
715
原创 LangGraph 源码分析 | 结构化输出
结构化输出建立在 LLM 已经经过 Tool use 微调的基础上Tool use 功能允许在特定场景下,根据可用的工具列表,LLM 能够智能地选择最合适的工具。接着,模型会根据该工具的 API 调用指南,生成符合要求的 JSON 格式请求而 LangGraph 的结构化输出复用了 Tool use 的功能,将给定的模式 schema 看成一个工具,要求 LLM 根据 schema 的描述,输出符合要求的“请求格式”,并取出 Tool use 功能返回的冗余字段。
2024-10-20 19:58:28
1184
原创 LangGraph 快速入门
LangGraph 并不是一个独立于 LangChain 的新框架,而是在 LLM 和 LangChain 的基础之上构建的一个扩展库,可以于 LangChain 现有的链(Chain)等无缝协作LangGraph 能够协调多个 Chain、Agent、Tool 等共同协作,实现依赖外部工具、外部数据库且带有反馈的问答任务OllamaOllama 是一个基于 Go 语言开发的简单易用的本地大模型运行框架。可以将其类比为 DockerTavilyTavily Search | 🦜️🔗 LangCha
2024-10-17 10:47:16
675
原创 LeetCode每日一题 | LCP 30. 魔塔游戏
假定小扣原计划按房间编号升序访问所有房间补血/打怪,为保证血量始终为正值,小扣需对房间访问顺序进行调整,每次仅能将一个怪物房间(负数的房间)调整至访问顺序末尾。请返回小扣最少需要调整几次,才能顺利访问所有房间。每个房间的补血道具/怪物对于血量影响记于数组 nums,其中正数表示道具补血数值,即血量增加对应数值;当访问到第 i 个房间,当前的血量值不为正数,说明需要将一个怪物房间(负数的房间)调整至访问顺序末尾。而为了确保调整次数最少,则需要用一个小顶堆,维护当前数值最小的怪物房间,并将其调整至顺序末尾。
2024-02-06 23:29:22
526
原创 LeetCode每日一题 | 1696. 跳跃游戏 VI
一开始你在下标 0 处。每一步,你最多可以往前跳 k 步,但你不能跳出数组的边界。也就是说,你可以从下标 i 跳到 [i + 1, min(n - 1, i + k)] 包含 两个端点的任意位置。你的目标是到达数组最后一个位置(下标为 n - 1 ),你的 得分 为经过的所有数字之和。给你一个下标从 0 开始的整数数组 nums 和一个整数 k。其中前 k 步的最大值,可以用一个双端队列进行维护。请你返回你能得到的 最大得分。表示到达位置 i 的最大得分。
2024-02-05 23:59:28
486
原创 Nim游戏
给定 n 堆石子,两位玩家轮流操作,每次操作可以从任意一堆石子中拿走任意数量的石子(可以拿完,但不能不拿),最后无法进行操作的人视为失败。第二行包含 n 个数字,其中第 i 个数字表示第 i 堆石子的数量。问如果两人都采用最优策略,先手是否必胜。如果先手方必胜,则输出 Yes。假设 n 堆石子,石子数目分别是。第一行包含整数 n。
2024-02-04 23:13:55
503
原创 LeetCode每日一题 | 1690. 石子游戏 VII
石子游戏中,爱丽丝和鲍勃轮流进行自己的回合,爱丽丝先开始 。有 n 块石子排成一排。每个玩家的回合中,可以从行中 移除 最左边的石头或最右边的石头,并获得与该行中剩余石头值之 和 相等的得分。当没有石头可移除时,得分较高者获胜。鲍勃发现他总是输掉游戏(可怜的鲍勃,他总是输),所以他决定尽力 减小得分的差值 。爱丽丝的目标是最大限度地 扩大得分的差值 。给你一个整数数组 stones ,其中 stones[i] 表示 从左边开始 的第 i 个石头的值,如果爱丽丝和鲍勃都 发挥出最佳水平 ,请返回他们 得分的差
2024-02-03 22:30:59
535
原创 LeetCode每日一题 | 1686. 石子游戏 VI
个石子,轮到某个玩家时,他可以 移出 一个石子并得到这个石子的价值。Alice 和 Bob 对石子价值有 不一样的的评判标准。所有石子都被取完后,得分较高的人为胜者。值从大到小进行排序, Alice 和 Bob 依次选择,就是最终的结果。Alice 和 Bob 轮流玩一个游戏,Alice 先手。即 Alice 和 Bob 采用的最优策略都是先选择。对比两种方案的优劣,可以对这两种方案的价值做差,即。,则 Alice 与 Bob 之间的石子价值差为。,则 Alice 与 Bob 之间的石子价值差为。
2024-02-02 23:03:05
547
原创 LeetCode每日一题 | 2670. 找出不同元素数目差数组
可以先进行一次遍历,用哈希表存储数组中每个元素的个数。然后第二遍遍历计算前缀和后缀只差。的 不同元素数目差 数组可以用一个长度为。特别需要说明的是,如果。中不同元素的数目 减去 后缀。的 不同元素数目差 数组。结束的子数组(包含下标。
2024-01-31 00:22:12
392
1
原创 LeetCode每日一题 | 2808. 使循环数组所有元素相等的最少秒数
因此,我们可以用一个哈希 map 存储相同元素的所有下标,然后计算相邻坐标之间的差值,得到全局的最大距离最小。仔细观察可以发现,这道题可以转为求循环数组中,相同元素x,之间邻接的最大距离最小。请你返回将数组 nums 中所有元素变成相等元素所需要的。给你一个下标从 0 开始长度为 n 的数组 nums。,所有元素会被同时替换。
2024-01-30 00:25:04
390
原创 数论 | 容斥原理
∣S1∪S2∪S3∣=∣S1∣+∣S2∣+∣S3∣−∣S1∩S2∣−∣S1∩S2∣−∣S1∩S3∣−∣S2∩S3∣+∣S1∩S2∩S3∣|S_1 ∪ S_2 ∪ S_3| = |S_1|+|S_2|+|S_3|-|S_1∩S_2|-|S_1∩S_2|-|S_1∩S_3|-|S_2∩S_3|+|S_1∩S_2∩S_3|∣S1∪S2∪S3∣=∣S1∣+∣S2∣+∣S3∣−∣S1∩S2∣−∣S1∩S2∣−∣S1∩S3∣−∣S2∩S3∣+∣S1∩S2∩S3∣时间复杂度:O(2n)O
2024-01-27 23:49:11
1023
原创 LeetCode每日一题 | 670. 最大交换
因此,我们只需要从右往左遍历(从个位开始),遍历过程中,记录右边数字的最大值。然后判断当前值是否比右边数字的最大值要小,若符合则交换这两个数,则可使交换后的数比原数要大。给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。交换一次数字中的任意两位。
2024-01-22 22:35:31
608
原创 KMP 算法
next 数组的求法是通过模板串自己与自己进行匹配操作得出来的。这样可以避免重复比较已经匹配的部分,提高效率。字符串的第一个匹配项的下标(下标从 0 开始)。这个子串的最长相同前后缀的长度。的某个字符不匹配,那么我们可以将。
2024-01-21 00:20:46
399
原创 岛屿问题(下)
为了方便实现并查集,将二维坐标转换为一维上的点,计算公式为。(代表土地) 构成的组合,这里的「相邻」要求两个。如果没有岛屿,则返回面积为。由一组上、下、左、右四个方向相连的。最后,对所有连通块大小取最大值。中最大的岛屿面积是多少?岛屿的面积是岛上值为。
2024-01-20 01:18:55
914
原创 岛屿问题(上)
岛屿中没有“湖”(“湖” 指水域在岛屿内部且不和岛屿周围的水相连)。格子是边长为 1 的正方形。网格为长方形,且宽度和高度均不超过 100。计算这个岛屿的周长。整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿)。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。(水)组成的的二维网格,请你计算网格中岛屿的数量。此外,你可以假设该网格的四条边均被水包围。中,每块子岛屿的模块是否都属于。中该岛屿的每一个格子都被。中的同一个连通分量。
2024-01-18 23:18:55
435
原创 计算几何 | 凸包 | Andrew 算法
下一个点若在栈顶边的左侧,则弹出栈顶的边;若下一个点在栈顶边的右侧,则保留栈顶的边,将新的边压入栈中;若下一个点在栈顶边的延长线上,按照题意,弹出栈顶的边,将新的边压入栈中。最后记得将两个边界点更新一下栈。
2024-01-14 23:53:12
482
原创 基本数据结构 | 并查集
合并两个集合查询某个元素的祖宗节点OlognO(logn)OlognOlognO(logn)Ologn,代码比较复杂,一般不单独用两种优化结合起来用,时间复杂度可以压缩到OαnOαn))
2024-01-12 17:41:18
399
原创 LeetCode每日一题 | 2645. 构造有效字符串的最少插入数
给你一个字符串 word ,你可以向其中任何位置插入 “a”、“b” 或 “c” 任意次,返回使 word 有效 需要插入的最少字母数。剩余部分就是简单模拟(LeetCode最近的每日一题怎么都这么水,2333)如果字符串可以由 “abc” 串联多次得到,则认为该字符串有效。
2024-01-11 23:45:05
492
原创 LeetCode每日一题 | 2696. 删除子串后的字符串最小长度
观察删除和拼接的规律,可以发现可以使用栈进行模拟,即通过将元素弹出栈来模拟删除的过程。你可以对此字符串执行一些操作,在每一步操作中,你可以从 s 中删除 任一个 “AB” 或 “CD” 子字符串。通过执行操作,删除所有 “AB” 和 “CD” 子串,返回可获得的最终字符串的 最小 可能长度。注意,删除子串后,重新连接出的字符串可能会产生新的 “AB” 或 “CD” 子串。由于题目要求删除所有"AB"和“CD”子串,并将字符串重新拼接。将字符串全部遍历结束后,栈内元素就是最终字符串的最小可能长度。
2024-01-10 21:23:27
399
原创 LeetCode每日一题 | 2707. 字符串中的额外字符
给你一个下标从 0 开始的字符串 s 和一个单词字典 dictionary 。你需要将 s 分割成若干个 互不重叠 的子字符串,每个子字符串都在 dictionary 中出现过。s 中可能会有一些 额外的字符 不在任何子字符串中。请你采取最优策略分割 s ,使剩下的字符 最少 。仔细观察这道题可以发现,可以转化成背包问题。状态定义:表示的所有分割策略中,剩下字符的最小值。状态计算:遍历单词字典中的所有字符串(看成物品),若字典中字符串的长度小于等于字符串(物品体积小于背包体积),则计算分割出该字符串是否能使
2024-01-09 21:32:33
530
原创 LeetCode每日一题 | 383. 赎金信
在相邻结点之间,请你插入一个新的结点,结点值为这两个相邻结点值的。剩下的部分就是简单的链表遍历以及插入新结点的问题。是可以被两个数字整除的最大正整数。,每个结点包含一个整数值。请你返回插入之后的链表。
2024-01-07 21:00:32
798
原创 LeetCode每日一题 | 2807. 在链表中插入最大公约数
在相邻结点之间,请你插入一个新的结点,结点值为这两个相邻结点值的。剩下的部分就是简单的链表遍历以及插入新结点的问题。是可以被两个数字整除的最大正整数。,每个结点包含一个整数值。请你返回插入之后的链表。
2024-01-06 22:33:53
674
原创 LeetCode每日一题 | 1944. 队列中可以看到的人数
他右边另一个人的条件是这两人之间的所有人都比他们两人。最后,判断此时栈是否为空,若不为空,要再加上。右边所可能看到的对象(单调递增的序列)。挡住了后面所有的人,则信息蕴含在。记遍历过程中,当前要研究的对象为。所能看到的最后一个人,即第一个比。个人在他右侧队列中能。
2024-01-05 19:35:37
698
原创 LeetCode每日一题 | 2397. 被列覆盖的最多行数
对于满足 matrix[row][col] == 1 的每个单元格 matrix[row][col](0
2024-01-04 22:34:10
623
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人