书生浦语训练营第二期笔记1

本文主要纪录训练营第一课的实战内容,过程纪录和心得感悟

B站课程第一课导读

主题概览

本视频是关于书生浦语大模型实战营的介绍,旨在让参会者掌握大模型开发和应用的技能。主讲者详细介绍了书生浦语大模型全链路开源体系,强调了大模型在人工智能发展的重要性,并概述了书生浦语大模型的开发历程、开源工具链及其在实际应用中的优化与部署。

主要要点

大模型的热度

大模型近年来成为学术界和工业界的热门话题,相关论文数量指数级增长。OpenAI在大模型领域的持续研究,ChatGPT应用的月活跃用户数快速增长。

大模型的重要性

大模型被认为是发展通用人工智能的重要途径。AI研究方向从专用模型过渡到通用模型。

书生浦语大模型

上海人工程实验室投入大量研究力量进行大语言模型及全链条工具体系的研发。实现了从轻量级到重量级不同规模的大模型系列,开源并提供免费商用服务。

书生浦语开源大模型性能

在多项评测集上表现出色,参数量不足1/3即可达到类似模型的性能。雷达图显示在Open Compass评测体系中具有良好的性能。

从模型到应用

涉及模型选型、业务场景评估、模型微调等多个步骤。针对不同场景提供模型微调和智能体构建的服务和框架。

书生浦语全链条开源体系

开源数据、预训练框架、微调框架、部署工具、评测工具及智能体应用工具。提供完整的从数据到预训练到微调到部署到评测到应用的全流程解决方案。

阅读笔记

00:00:00 欢迎参加书生浦语大模型实战营

视频开场介绍了本次实战营的目的,希望参与者能够在其中掌握大模型开发和应用的技能,并有所收获。

提到今天的主题是“书生浦语大模型”,这是近年来备受瞩目的领域之一,在学术界和工业界的广泛应用使得这一领域的研究成果快速增长。

00:03:41 上海人工程实验室在大语言模型及全链路工具体系方面的研究工作

讲述了上海人工程实验室在这个背景下投入了大量的研究力量来进行大语言模型及相关工作的研究。

提到了该实验室从去年年初就开始了关于大语言模型的研发工作,并且一直在不断推动这些模型的开源化。

举例展示了他们的成果,例如去年六月份发布的Intel M千亿参数的大预言模型,七月份的世界人工智能大会上的更新等等。

开源历程

开源体系

00:06:37 书生普语开源大模型的性能分析

讲解了书生普语开源大模型的表现情况,无论是在综合科学考试、知识问答阅读理解等方面都表现出色。

强调了即使使用不到三分之一的参数量也能达到或超过类似大型模型的效果。

进一步利用Open Compass评价系统展现了书生普语在多个维度上的优秀性能。

20B开源大模型性能参考图

00:08:55 如何将开放源代码模型应用于实际场景

阐述了从选择合适的开源模型到将其成功地融入具体应用场景之间的挑战和步骤。

指出首先要进行的是模型的选择,即基于各个维度的能力对比选出最适合当前应用场景的模型。

然后是对业务场景本身的评估,判断其复杂度是否足以支持直接引入开源模型,若不能则需对其进行修改优化才能适应实际情况。

00:10:01 讨论模型微调及其所需算力等问题

演讲人强调,在应用开源模型的过程中,可能会遇到一个问题——计算力是否充足。如果算力足够,则可以选择进行全面参数的微调;否则就需要采取部分参数的微调方法,例如采用LORA算法,将大部分参数固定下来,仅调整一小部分参数。

他还提到了一种可能性,那就是即使没有足够的算力也可以尝试进行模型微调,并且这种方法的成功与否取决于具体的业务场景。

00:11:35 介绍了基于大模型的应用开发全过程及面临的挑战

演讲人表示,为了使大型模型真正发挥作用,需要经历一系列复杂的步骤,这其中包括但不限于数据准备、预训练、微调、部署等多个阶段。

在这个过程中涉及到许多专业知识和技术技能,因此往往需要借助专业框架或工具的帮助。

此外,还需要面对诸如怎样减少资源消耗以便更好地部署模型、如何提升应用程序的整体吞吐量等一系列问题。

00:12:39 介绍了“书生浦语”全链条开源开放体系的具体组成部分和服务功能

“书生浦语”的全链条开源开放体系包含了数据到预训练再到微调直到部署的所有环节。

该系统还包括了大量的开源项目,比如用于数据处理的"书生万卷"、用于预训练的InternLM-Train、用于微调的XTuner等。

"书生万卷"是一个多模态语料库,包含了大量不同类型的多媒体数据。“InternLM-Train”则是高效的预训练框架,“XTuner”则支持多种形式的微调操作。

00:14:56 “书生浦语”系统的详细介绍和展示

演讲人进一步展示了“书生浦语”系统的具体内容和运行机制。包括了数据服务(如“书生万卷”,提供了大量的多模态数据)、预训练服务(如“InternLM-Train”,实现了高效准确的预训练)和微调服务(如“XTuner”,支持多样性的微调策略)

这些组件共同构成了完整的AI应用开发全流程解决方案,并且都已实现完全开源化。

书生万卷数据集

开放数据平台

预训练与微调

00:20:01 "书生浦语"系统的详细介绍和展示

演讲人在视频中介绍了名为"书生浦语"的人工智能开放平台,其中包括了大量的多模态数据和服务,例如"书生万卷"和"InternLM-Train"

"书生浦语"系统还包括了一个高效的微调框架"XTuner",它可以适应各种生态环境,兼容不同的微调算法和技术标准,比如HuggingFace和Model Scope等开源生态系统

此外,“XTuner”还能自动优化训练过程,让开发者无需关心复杂的显存优化和计算加速等问题。同时,它也能适配多种硬件设备,包括NVIDIA的所有显卡及Intel Movidius Myriad X、Google Tensor Processing Units等多种芯片。

XTuner 玩转微调

00:22:56 关于大型语言模型评测的讨论

演讲人提到现有的大型语言模型评测体系存在一定的局限性和不足之处,因此提出了一种全新的开源评测体系——Open Compass

Open Compass具有六个维度的大模型评估指标,并能支持超过80个数据集和40万个测试问题

Open Compass不仅是一种评价体系,同时也提供了一系列用于模型测评的工具和支持环境,使得研究人员和工程师可以在其中方便地创建定制化的评测场景和数据集

00:29:20 关于大语言模型部署的探讨

对于大语言模型来说,其特点是内存需求巨大并且需要较长的推理时间和较大的存储空间;

解决这些问题的一种途径是对模型进行部署优化,在保证性能的同时尽可能减少资源占用;

具体的方法包括将模型分解成多个小模块以便于分批处理输入信息; 使用特殊的压缩技术降低模型大小从而减小所需的储存空间;

00:30:01 讨论大语言模型部署面临的挑战及应对方法。

大语言模型的特点导致其在部署过程中面临诸多挑战,例如内存需求巨大、推理时间长、存储空间要求高等;

为了克服这些挑战,可以通过模型部署优化的方式,尽量减少资源占用,并提高性能;

具体的优化手段包括将模型拆分成若干个小模块,便于批量处理输入信息;采用特殊的技术压缩模型尺寸,以此缩小所需储存空间。

00:31:27 介绍了如何提升大语言模型的部署效率和服务质量的相关技术和措施。

从硬件角度出发,提出要在各种设备(比如消费型显卡或移动终端)上进行高效部署;

从软件角度看,则需考虑如何加快令牌生成速度、解决动态形状问题以及有效管理利用内存等问题;

此外还强调了想要提升系统的整体吞吐量和平均响应时间的重要性。

00:32:16 介绍了MT PLY这一高效的推理框架及其主要功能。

MT PLY是一款专门用于大型语言模型部署的高性能推理框架,它可以提供完整的大型模型部署的全链条解决方案;

该框架包含了多种核心技术,如模型简化、推理服务等,并提供了丰富的接口供开发者使用;

MT PLY不仅具有高效率的优点,而且还能与其他开放平台无缝衔接,方便开发者将其集成进现有的应用程序之中。

00:35:08 阐述了大语言模型的应用局限性和存在的问题。

尽管大语言模型表现出了极高的预测能力和实用性,但它们仍然存在一些限制和不足之处,例如无法实时更新最新的信息或者知识库的内容;

此外,这类模型在回答某些特定类型的问题时可能会显得不够准确可靠,并且在面对复杂的数学运算任务时也可能表现出力不从心的情况;

因此,在实际运用中往往需要结合其他的工具和技术来弥补这些缺陷。

00:36:46 讲解了一款名为Legend的智能体框架的设计理念和运作方式。

Legend是一种旨在构建智能体的新颖框架,其中的核心思想是以大规模的语言模型为核心来进行决策制定和行动实施的过程;

00:40:03 讲解了Legend智能体框架的支持性和灵活性特点。

Legend不仅支持Stable Diffusion和Hugging Face等流行的模型,还支持多种主流的智能体系统,例如Transformer Agent;

Legend提供灵活的多模态工具调用接口,能支持各种不同类型的输入输出格式的工具函数,方便开发者创建新工具或扩展现有功能;

Legend支持远程工具部署,并且可以通过Agent Neo将大型模型与环境相连接,使其能够调用更多工具完成任务。

00:41:21 介绍了图灵无尽全链路开源开放体系的内容及优势。

图灵无尽全链路开源开放体系涵盖了数据收集、预训练、微调、部署、评测和应用等多个环节,形成了完整的技术生态;

该体系通过持续更新的数据集和算法优化,保证技术的先进性;

用户可通过扫描右侧二维码访问GitHub的相关页面,深入了解和参与到该项目中。

InternLM2 技术报告

简介

《InternLM2 技术报告》,由上海人工智能实验室、SenseTime Group、香港中文大学和复旦大学的多个研究团队共同编写。

报告介绍了名为InternLM2的开源大型语言模型(LLM),此模型在6个维度和30个基准测试中,通过创新的预训练和优化技术,全面评估并超越了其前身。文本详细描述了InternLM2的预训练过程,并提供了关于如何准备不同类型的数据(如文本、代码和长序列数据)的细致指导。

文章详细阐述了InternLM2的预训练过程,强调了包括文本、代码和长序列数据在内的多样化数据类型的准备。同时,文章还讨论了如何有效地扩展LLM的上下文长度,以及如何利用Supervised Fine-Tuning(SFT)和一种新的条件在线强化学习从人类反馈(COOL RLHF)策略来对齐模型。此外,文章还介绍了如何构建和优化InternLM2,包括使用SwiGLU激活函数提高训练效率和性能,以及如何通过使用不同的过滤器来减少大规模语言模型的训练数据量,并优化其性能。最后,文章还介绍了如何采用改进的Proximal Policy Optimization(PPO)算法进行训练的语言模型,以及对InternLM2在不同任务上的表现分析。

思维导图

具体重点

InternLM2的架构设计与性能表现

  • 使用了一种高效的轻量级预训练框架——InternEvo来构建这款模型,在数千台GPU上实现大规模训练。

  • 模型采用了Transformer结构作为基础,这种结构因其出色的并行化能力而被广泛应用于过去的大型语言模型中。

  • 对于长序列建模的需求,该团队首先采用群体查询注意力(GQA)方法使小内存占用时能够推断长序列;然后通过对初始阶段用4k语境文本训练后的模型进一步转换为高质量的32k文本进行更深入的训练。

关于数据准备的经验和技术细节

  • 详细地讲述了如何准备用于预训练的数据、领域特定增强数据、监督微调(SFT)数据及人类反馈强化学习(RLHF)数据的过程

  • 为了确保模型能更好地遵循人的指令并与人价值观保持一致,他们在完成长时间预训后进行了监督微调(SFT),并在之后引入了一个新的条件在线的人类反馈强化学习(COOL RLHF)策略。

  • 此外,团队还提供了不同大小版本的模型供社区分析比较各阶段的变化情况。

数据污染问题及其解决方案

  • 数据污染是指由于错误或误导性的输入导致机器学习算法产生不准确的结果的问题。

  • 尽管已经采取了一系列措施防止这种情况发生,但仍然存在一定的风险。

LLAMA架构的进步及模型效率提升

  • Llama架构在高效率推理(lla, 2023)以及运算符优化(Dao, 2023)等方面取得了进步。

  • 为了确保其与已建立的生态系统无缝对接,并与其他知名大型语言模型如Falcon (Almazrouei等人,2023),Qwen(Bai等人,2023a),Baichuan(Yang等人,2023),Mistral(Jiang等人,2023)保持一致,选择遵循LLama结构设计原则。

  • 通过整合wk,Wq,wv矩阵,在预训练阶段实现了超过5%的训练加速效果。

数据处理流程及其重要性

  • 大规模语言模型(LLMs)的数据预训练由多方面因素塑造,涉及敏感数据处理、全面知识覆盖等问题。

  • 该工作详述了通用领域文本数据、编程相关数据和长篇文本数据的准备过程。

  • 对于互联网来源的数据进行规则基础过滤、去重、安全过滤和质量过滤等一系列步骤以获得高质量且安全的数据集。

代码数据收集和处理方法

  • 从GitHub直接爬取、公共数据集以及在线资源中获取编程相关的数据。

  • 所有数据被转换为统一的markdown格式后存储成jsonl文件形式。

  • 采用基于本地化的哈希函数的方法进行重复检测来去除大量冗余代码。

长序列语料库的选择和筛选策略

  • 针对能够处理非常长上下文(>32K标记)的语言模型的研究是一个日益热门的话题。

  • 我们采用了Lv等人(2024)提到的过程来准备长文本预训练数据,其中包括额外的实验和讨论。

  • 我们的数据处理管道旨在滤除低质的长文本数据,它分为三个阶段:长度选择、统计过滤器和困惑度过滤器。所有的选定用于长期情境训练的数据都是标准预训练语料库的一部分。

数据过滤过程的效果显著

  • 文本中提到的数据过滤过程中,大部分网页数据(来自Common Crawl)以及专利数据被剔除,而书籍和论文数据则得以保留。

  • 这种筛选方法能够有效地去除冗余或无关的信息,提高模型处理的有效性和准确性。

预训练设置的具体参数及优化策略

  • 在预训练阶段使用的超参数如学习率、批大小等都有详细的设定,并且使用了AdamW作为优化器进行模型调整。

  • 预训练的过程中采用了分阶段的方法,首先用长度不超过4千字节的数据进行预训练,在第二阶段加入了50%的最长为32千字节的数据,最后在第三阶段利用特定能力增强数据进行了进一步的训练。

强化学习与人类反馈相结合以提升模型性能

  • 强化学习从人类反馈(RLHF)是一种创新性的大型语言模型训练方式,通过整合人类反馈创建奖励模型来提供信号供模型学习。

  • 提出了条件在线RLHF(COOL RLHF),引入了一个基于不同系统提示的奖励机制来解决偏好冲突问题,并采用多轮在线RLHF策略减少奖励黑客现象的发生。

模型初始化研究及效果分析

  • 研究人员进行了关于价值网络(critic model)初始化的对比实验,结果表明从奖励模型中初始化的价值网络在前几轮训练中的损失较大,但在大约20个迭代后,其表现出了较低的损失,并且导致演员模型获得更高的奖励。

  • 这种现象可能揭示了奖励建模任务与评估建模任务之间的根本差异,在随后阶段更低的损失可能是由于更一致的世界知识理解和更好的评价原则掌握所致。

条件强化学习策略的应用及其影响

  • 为了使奖励模型能够适应各种不同的条件,研究人员为不同领域的查询添加适当的条件系统提示到每次采样的响应之前进行评分计算,这确保了模型的回答能根据不同领域的需求进行上下文调整。

  • 通过这种方法,即使是在新的反馈下也能保证模型的知识保留以及基础能力的保持。

长距离语境微调技术的研究与发展

  • 为了保护大型语言模型(LLMs)在微调后的长期语境能力,研究人员继续使用来自书籍的数据和由特定模式连接起来的GitHub仓库数据来进行长距离预训练和RLHF。

  • 通过对代码库的选择和处理方式的设计,成功提升了LLMs的语言能力和编程能力。

工具增强的大语言模型的发展应用

  • 研究人员采用了一种修改过的聊天ML格式来实现通用工具呼叫功能,并引入了一个“环境”角色以提供给模型更多的信号。

  • 此外还定义了两个特殊的关键词支持AI代理的不同用途,如代码解释器和外部插件。这一设计使得我们可以采用统一的流式对话格式同时兼容多种类型的扩展插件和AI环境。

多维度性能评估方法的有效性验证

  • 研究人员提供了全面的下游任务和一致性性的评估和分析,这些评估被细分为多个子任务以便于深入理解模型的优势和劣势。

  • 所有的评估都是基于OpenCompass软件包完成的除非另有明确指定。

模型在数学推理测试集上的表现优于GPT-3.5

  • 研究发现,在各种数学推理测试集中,如HellaSwag的情境推理(上升了15.6%)以及BBH的挑战性全面推理(上升了26.4%),InternLM2的表现显著超过了GPT-3.5。

  • InternLM2展示了其在更小规模模型中的卓越推理能力。

模型在多种编程任务中表现出色

  • 通过使用广泛认可的标准基准MBPP和HumanEval来评估代码生成模型的能力时,结果显示InternLM系列取得了领先性能。

  • InternLM2-Chat-20B模型超越先前的最佳成绩超过10%,这凸显了InternLM系列在代码生成任务方面的出色专业技能。

经过特定增强训练后,模型的各种能力和效果都有明显提升

  • 通过对多个评价集进行平均计算得出的结果显示,这些能力有了明显的提高,并且我们还比较了基础模型在接受强化训练前后的性能。

  • SFT模型接受具有特定增强功能的训练后,可以在各个能力维度上取得更好的性能。

长序列理解和推断方面,该模型展现了强大的长期上下文建模能力

  • L-Eval是一个由18个子任务组成的长序列基准测试套件,其中包括来自法律、经济和技术等多个领域的文本。结果表明所有版本的InternLM都能够在两个基准测试套件上展现出强健的长期上下文建模性能。

  • On LongBench,小于或等于7亿参数大小的所有型号都不及ChatGLM3-6B。然而,对于InternLM来说,不同的参数尺寸并没有导致长时间内表现的巨大差异,这一点将得到进一步的研究。

工具利用方面,外部工具和API能够大大提高大型语言模型处理复杂现实世界问题的能力

  • GSM8K、Math和最近推出的MathBench等标准基准数据集被用来分析LLM使用工具的专业水平。结果显示即使使用代码解释器也实现了大幅改进的效果特别体现在Math数据集上。

  • T-Eval和CIBench这两个新引入的数据集同样显示出InternLM系列在整个范围内展示出了优越或者相当的竞争优势。

模型在多个基准测试中的表现达到或接近最优

  • 在本节中,我们评估了InternLM2在几种流行主观匹配数据集上的性能,并比较了强化学习(RLHF)模型与序列到反馈(SFT)模型的表现。

  • 结果显示,在多种基准测试上,InternLM2的整体性能达到了或者接近最优的结果,这表明该系列模型的输出结果高度一致于人类偏好。

不同参数大小组别的模型对比分析

  • 表格展示了不同参数规模和类型的模型在各种任务指标下的得分情况,其中一些型号被用粗体表示为整体领导者,而其他则在其参数组内被强调出来作为领导者。

  • 分析结果显示,随着模型尺寸的增长,其在某些任务上的表现有所提升;然而也有例外的情况存在,例如有些大容量版本的模型并未显著优于小容量版本。

关于训练策略的有效性的讨论

  • 文章通过实验验证了使用条件系统提示对于提高精度的效果明显。

  • 实验结果揭示了当未使用条件系统提示时,精确度出现了大幅下降;反之,则实现了明显的增加。

关于数据污染问题的研究及结论

  • 研究人员通过对基础模型进行样本语言建模损失的评价来检测潜在的数据泄露现象。

  • 结果显示了一些可能存在的数据泄漏迹象以及过度拟合的问题,并提出了相应的改进措施以优化未来的预训练工作。

自然语言处理领域的研究进展

  • 文本中包含了多个关于自然语言处理领域的新研究成果。这些成果涵盖了从模型设计到训练方法等多个方面,如大型语言模型的设计与优化、数据集构建及评估工具开发等。

  • 许多研究表明了如何通过改进算法或使用更大的数据集来提高模型性能。

深度学习中的强化学习应用

  • 在一些工作中,研究人员尝试将强化学习应用于深度学习框架内以改善其表现。如在某些工作(例如Christian Paul等人)中,他们利用人类偏好进行深度强化学习的研究,并将其用于神经信息处理系统中。

  • 另外,在其他的一些研究中,则是探索如何安全地运用人类反馈来进行强化学习。

大规模语言建模的发展趋势

  • 随着技术的进步和发展,越来越多的大规模语言模型被提出和实现出来。比如,“Palm”项目就是一种基于路径的语言建模方式;而“Agent-Flan”则是针对大语言模型的有效调整设计的数据和方法。

  • 此外,还有一些专注于特定任务或者语种的评价平台和工具包也被广泛采用,比如"C-EVAL"就是一个中文评价套件。

主要问题

问题一:这些数据处理与预训练的方法是如何提高模型性能的?

通过上述文档内容,我们可以总结出以下方法来提高模型性能:

  1. Quality Filtering:

    1. 高质量数据被赋予更高的采样权重,允许模型在预训练过程中多次迭代学习。

    2. 中等质量的数据会被正常采样,并通常只训练一次。

    3. 低质量数据被排除,因为实践发现,去除它们对于优化模型性能和确保训练稳定性至关重要。

  1. Data Format Cleaning:

    1. 将所有数据转换为统一的Markdown格式,便于模型学习。

  1. Pre-training Data:

    1. 使用长文本数据进行预训练,以教会模型编程知识。

    2. 采用统计过滤器,利用多种词汇和语言学特征选择高质量数据。

  1. Pre-training Phases:

    1. 通过不同阶段的预训练,例如使用增强训练来提升模型在特定任务上的性能。

    2. 利用监督精细训练(SFT)和强化学习从人类反馈(RLHF)中学习,以确保模型符合人类期望。

  1. Alignment:

    1. 在预训练阶段,模型通过对齐数据学习相关能力,这有助于模型在后续任务中更好地提取答案。

  1. Capability-Specific Enhancement Training:

    1. 通过针对特定能力的增强训练,如数学问题解决、编码等,来提升模型在这些领域的表现。

  1. Long-Context Modeling:

    1. 训练模型捕捉长范围依赖,通过逐步增加预训练中使用的上下文长度,使模型能够处理更复杂的任务。

  1. Efficient Training Framework:

    1. 使用高效的训练框架如InternEvo,它支持数据、张量、序列和管道并行性,使得训练可以在数千个GPU上扩展。

通过这些方法,模型能够在各种能力维度和基准测试中获得更好的性能,以及在主观评估中表现出色。文档中详细介绍了这些技术如何应用于预训练和优化过程,从而提高模型的学习效率和最终性能。

问题二:InternLM2的技术创新点具体包括哪些方面?

根据文档内容,InternLM2的技术创新点主要包括以下几个方面:

  1. Hybrid Filtering Process:

  1. InternLM2采用了混合过滤过程,结合规则和模型驱动的方法来过滤数据,确保只有高质量的数据用于训练。这有助于优化模型性能和保证训练稳定性。

  1. Long-Context Modeling:

  1. 为了有效处理长文本数据,InternLM2在预训练阶段逐渐增加上下文长度,从4k到32k,使其能够捕获长范围的依赖关系,这对于理解和生成长文本内容至关重要。

  1. Capability-Specific Enhancement Training:

  1. 通过针对特定能力的增强训练,比如数学问题解决、编码等,InternLM2显著提升了模型在这些领域的表现。这种定制化的训练方法提高了模型在多样化任务中的适应性和性能。

  1. Conditional Online RLHF:

  1. 为了避免在强化学习从人类反馈(RLHF)过程中出现偏好冲突,InternLM2采用了条件在线RLHF方法来协调不同的偏好。这种方法增强了模型对复杂指令和多样化任务的响应能力。

  1. Efficient Training Infrastructure:

  1. 使用名为InternEvo的高效训练框架,该框架支持数据、张量、序列和管道的并行处理,使得模型训练可以在大规模GPU集群上进行,从而提高训练效率和可扩展性。

  1. Diverse Data Preparation:

  1. InternLM2不仅关注文本数据,还特别强调了代码数据和长上下文数据的准备,这丰富了模型的经验,使其更加灵活和强大。

  1. Open-sourcing Model and Training Details:

  1. 通过开源模型和提供详细的训练过程说明,InternLM2促进了研究的透明度和复现可能性,有利于整个社区在此基础上进一步发展和改进。

附件链接

课程链接:https://www.bilibili.com/video/BV1Rc411b7ns/

课程论文: https://arxiv.org/pdf/2403.17297.pdf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值