解读ChatGPT背后的技术重点:RLHF、IFT、CoT、红蓝对抗

基于人类反馈的强化学习(RLHF)入门指南 阅读详情

近段时间,ChatGPT 横空出世并获得巨大成功,使得 RLHF、SFT、IFT、CoT 等这些晦涩的缩写开始出现在普罗大众的讨论中。这些晦涩的首字母缩略词究竟是什么意思?为什么它们如此重要?我们调查了相关的所有重要论文,以对这些工作进行分类,总结迄今为止的工作,并对后续工作进行展望。

我们先来看看基于语言模型的会话代理的全景。ChatGPT 并非首创,事实上很多组织在 OpenAI 之前就发布了自己的语言模型对话代理 (dialog agents),包括 Meta 的 BlenderBot,Google 的 LaMDA,DeepMind 的 Sparrow,以及 Anthropic 的 Assistant (Anthropic 的 Claude 就是部分基于 Assistant 继续开发而得的)。

语言模型对话代理产品论文链接:

  • Meta 的 BlenderBot:
    https://arxiv.org/abs/2208.03188

  • Google 的 LaMDA:
    https://arxiv.org/abs/2201.08239

  • DeepMind 的 Sparrow:
    https://arxiv.org/abs/2209.14375

  • Anthropic 的 Assistant:
    https://arxiv.org/abs/2204.05862

其中一些团队还公布了他们构建开源聊天机器人的计划,并公开分享了路线图 (比如 LAION 团队的 Open Assistant),其他团队肯定也有类似的内容,但尚未宣布。你可以在 Open Assistant 的 GitHub 仓库中找到其愿景 & 路线图文档: https://github.com/LAION-AI/Open-Assistant

下表根据是否能公开访问、训练数据、模型架构和评估方向的详细信息对这些 AI 聊天机器人进行了比较。ChatGPT 没有这些信息的记录,因此我们改为使用 InstructGPT 的详细信息,这是一个来自 OpenAI 的指令微调模型,据信它是 ChatGPT 的基础。

LaMDABlenderBot 3SparrowChatGPT / InstructGPTAssistant
组织GoogleMetaDeepMindOpenAIAnthropic
能否公开访问否能否有限否
大小137B175B70B175B52B
预训练
基础模型
未知OPTChinchillaGPT-3.5未知
预训练语料库大小 (词数)2.81T180B1.4T未知400B
模型是否可以
访问网络
✔✔✔✖️✖️
有监督
微调
✔✔✔✔✔
微调
数据大小
质量:6.4K
安全性:8K
真实性:4K
IR:49K
大小从 18K 到 1.2M 不等的 20 个 NLP 数据集未知12.7K (此为 InstructGPT,ChatGPT 可能更多)150K+ LM 生成的数据
RLHF✖️✖️✔✔✔
人为制定的安全规则✔✖️✔✖️✔
评价标准1、质量 (合情性、具体性、趣味性)
2、安全性 (偏见) 3、真实性
1、质量 (参与度、知识运用)
2、安全性 (毒性、偏见)
1、校直 (有帮助,无害,正确)
2、证据 (来自网络)
3、是否违反规则
4、偏见和刻板印象
5、诚信度
1、 校直 (有帮助、无害、真实)
2、偏见
1、校直 (有帮助、无害、诚实)
2、偏见
用于数据标注的众包平台美国供应商亚马逊 MTurk未知Upwork 和 Scale AISurge AI、Amazon MTurk 和 Upwork

我们观察到,尽管在训练数据、模型和微调方面存在许多差异,但也存在一些共性。上述所有聊天机器人的一个共同目标是「指令依从 (instruction following)」,即遵循用户指定的指令。例如,要求 ChatGPT 写一首关于微调的诗。

ChatGPT 指令示例

从预测文本到遵循指令

通常,基础模型的语言建模目标不足以让模型学会以有用的方式遵循用户的指令。模型创建者使用「指令微调 (Instruction Fine-Tuning,IFT)」方法来达到该目的,该方法除了使用情感分析、文本分类、摘要等经典 NLP 任务来微调模型外,还在非常多样化的任务集上向基础模型示范各种书面指令及其输出,从而实现对基础模型的微调。这些指令示范由三个主要部分组成 —— 指令、输入和输出。输入是可选的,一些任务只需要指令,如上文使用 ChatGPT 做开放式文本生成的示例。当存在输入时,输入和输出组成一个「实例 (instance)」。给定指令可以有多个输入和输出实例。如下例 (摘自 Wang 等,'22):

指令和实例示例

IFT 的训练数据通常是人工编写的指令及用语言模型自举 (bootstrap) 生成的实例的集合。在自举时,先使用少样本技术输入一些样本给 LM 用于提示它 (如上图所示),随后要求 LM 生成新的指令、输入和输出。每一轮都会从人工编写的样本和模型生成的样本中各选择一些送给模型。人类和模型对创建数据集的贡献构成了一个谱图,见下图:

IFT 谱图

谱图的一端是纯模型生成的 IFT 数据集,例如 Unnatural Instructions (Honovich 等,'22);另一端是经由社区的大量努力精心制作的指令如 Super-natural instructions (Wang 等,'22)。在这两者之间的工作是使用一小组高质量的种子数据集,然后进行自举生成最终数据集,如 Self-Instruct (Wang 等,'22)。为 IFT 整理数据集的另一种方法是将现有的用于各种任务 (包括提示)的高质量众包 NLP 数据集使用统一模式或不同模板转换为指令。这一系列工作包括 T0 (Sanh 等,'22)、Natural instructions 数据集 (Mishra 等,'22)、FLAN LM (Wei 等,'22) 和 OPT-IML (Iyer 等,'22)。

论文链接:

  • Unnatural Instructions (Honovich 等, '22):
    https://arxiv.org/abs/2212.09689

  • Super-natural instructions (Wang 等, '22):
    https://arxiv.org/abs/2204.07705

  • Self-Instruct (Wang 等, '22):
    https://arxiv.org/abs/2212.10560

  • T0 (Sanh 等, '22):
    https://arxiv.org/abs/2110.08207

  • Natural instructions 数据集 (Mishra 等, '22):
    https://arxiv.org/abs/2104.08773

  • FLAN LM (Wei 等, '22):
    https://arxiv.org/abs/2109.01652

  • OPT-IML (Iyer 等, '22):
    https://arxiv.org/abs/2212.12017

安全地遵循指令

然而,经过指令微调的 LM 并不总是能生成 有帮助的 和 安全的 响应。这种行为的例子包括通过总是给出无益的回应来逃避,例如 “对不起,我不明白。” 或对敏感话题的用户输入生成不安全的响应。为了减轻这种行为,模型开发人员使用 有监督微调 (Supervised Fine-tuning, SFT),在高质量的人类标注数据上微调基础语言模型,以提高有用性和无害性。例如,请参阅下面的表格(摘自 Sparrow 论文的附录 F)。

SFT 和 IFT 联系非常紧密。指令微调可以看作是有监督微调的一个子集。在最近的文献中,SFT 阶段经常被用于提高响应的安全性,而不是接在 IFT 后面提高指令相应的具体性。将来,这种分类和划分应该日臻成熟,形成更清晰的使用场景和方法论。

人工安全规则

谷歌的 LaMDA 也根据一组规则 (论文附录 A) 在带有安全标注的对话数据集上进行微调。这些规则通常由模型创建者预先定义和开发,涵盖广泛的主题,包括伤害、歧视、错误信息。

微调模型

同时,OpenAI 的 InstructGPT、DeepMind 的 Sparrow 和 Anthropic 的 Constitutional AI 使用 人类反馈强化学习 (Reinforcement Learning From Human Feedback,RLHF) 来微调模型,该方法使用基于人类偏好的标注数据。在 RLHF 中,根据人类反馈来对模型的响应进行排序标注 (如,根据人类偏好选择文本简介)。然后,用这些带标注的响应来训练偏好模型,该模型用于返回 RL 优化器的标量奖励。最后,通过强化学习训练对话代理来模拟偏好模型。有关更多详细信息,请参阅我们之前关于 RLHF 的文章: ChatGPT 背后的“功臣”——RLHF 技术详解。

思维链 (Chain-of-thought,CoT) 提示 (Wei 等,'22) 是指令示范的一种特殊情况,它通过引发对话代理的逐步推理来生成输出。使用 CoT 微调的模型使用带有逐步推理的人工标注的指令数据集。这是 Let’s think step by step 这一著名提示的由来。下面的示例取自 Chung 等,'22,橙色高亮的部分是指令,粉色是输入和输出,蓝色是 CoT 推理。

CoT 图解

如 Chung 等,'22 中所述,使用 CoT 微调的模型在涉及常识、算术和符号推理的任务上表现得更好。

如 Bai 等,'22 的工作所示,CoT 微调也显示出对无害性非常有效 (有时比 RLHF 做得更好),而且对敏感提示,模型不会回避并生成 “抱歉,我无法回答这个问题” 这样的回答。更多示例,请参见其论文的附录 D。

CoT 和 RLHF 的对比

论文链接:

  • 思维链提示 (Wei 等, '22):
    https://arxiv.org/abs/2201.11903

  • Let’s think step by step:
    https://arxiv.org/abs/2205.11916

  • CoT 图解示例 (Chung 等, '22):
    https://arxiv.org/abs/2210.11416

  • CoT 微调也显示出对无害性非常有效 (Bai 等, '22):
    ttps://www.anthropic.com/constitutional.pdf

要点

  1. 与预训练数据相比,您只需要非常小的一部分数据来进行指令微调 (几百个数量级);

  2. 使用人工标注的有监督微调使模型输出更安全和有用;

  3. CoT 微调提高了模型在需要逐步思考的任务上的性能,并使它们在敏感话题上不那么回避。

对话代理的进一步工作

这个博客总结了许多关于使对话代理有用的现有工作。但仍有许多悬而未决的问题有待探索。我们在这里列出了其中的一些。

  1. RL 在从人类反馈中学习有多重要?我们能否通过在 IFT 或 SFT 中使用更高质量的数据进行训练来获得 RLHF 的性能?

  2. 为了安全的角度看,Sparrow 中的 SFT+RLHF 与 LaMDA 中仅使用 SFT 相比如何?

  3. 鉴于我们有 IFT、SFT、CoT 和 RLHF,预训练有多大的必要性?如何折衷?人们应该使用的最佳基础模型是什么 (公开的和非公开的)?

  4. 本文中引用的许多模型都经过 红蓝对抗 (red-teaming) 的精心设计,工程师特地搜寻故障模式并基于已被揭示的问题改进后续的训练 (提示和方法)。我们如何系统地记录这些方法的效果并重现它们?

红蓝对抗 (red-teaming) 论文地址:
https://arxiv.org/abs/2209.07858

P.s. 如果您发现本博客中的任何信息缺失或不正确,请告知我们。

引用:

Rajani et al.,"What Makes a Dialog Agent Useful?", Hugging Face Blog, 2023.

BibTeX 引用:

@article {rajani2023ift,
  author = {Rajani, Nazneen and Lambert, Nathan and Sanh, Victor and Wolf, Thomas},
  title = {What Makes a Dialog Agent Useful?},
  journal = {Hugging Face Blog},
  year = {2023},
  note = {https://huggingface.co/blog/dialog-agents},
}
❝

英文原文:
https://huggingface.co/blog/dialog-agents

译者: Matrix Yao (姚伟峰) ,英特尔深度学习工程师,工作方向为 transformer-family 模型在各模态数据上的应用及大规模模型的训练推理。

【LLM第三篇】名词解释:RLHF——chatgpt的功臣 RLHF (Reinforcement Learning from Human Feedback) ,直译为:“来自人类反馈的强化学习”。RLHF是一种结合了强化学习和人类反馈的机器学习方法,主要用于训练大模型以执行复杂的任务,尤其是当这些任务难以通过传统的奖励函数来精确定义时。 阅读详情

相关推荐

RLHF(从人类反馈中进行强化学习)详解(一)

RLHF,即Reinforcement Learning from Human Feedback(从人类反馈中进行强化学习),是一种结合了机器学习中的强化学习算法与人类主观判断的训练技术。这种方法旨在利用人类的直觉和判断力来指导人工智能系统学习更复杂、更贴近人类期望的行为模式,尤其是在自然语言处理(NLP)和决策制定等领域。

TheJustice_的博客 6449

ChatGPT技术原理解析:从RL之PPO算法、RLHF到GPT4、instructGPT

本篇ChatGPT笔记会全力做到,通俗易懂且循序渐进(尽最大努力让每一个初学者哪怕是文科生都能没有障碍的读懂每一字一句、每一个概念、每一个公式) 一方面,对于想了解ChatGPT背后原理和如何发展而来的,逐一阐述从GPT/GPT2/GPT3到强化学习、PPO算法,最后再到instructGPT、ChatGPT、SeqGAN 且本文之前,99%的文章都不会把PPO算法从头推到尾,本文会把PPO从零推到尾,按照“RL-策略梯度-重要性采样(重要性权重)-TRPO(增加信任区域和KL散度约束)-PPO”的顺序逐步

结构之法 算法之道 22万+

一文读懂「RLHF」基于人类反馈的进行强化学习

RLHF就是基于人类反馈(Human Feedback)对语言模型进行强化学习(Reinforcement Learning),和一般的fine-tune过程乃至prompt tuning自然也不同。多种策略产生样本并收集人类反馈训练奖励模型训练强化学习策略,微调 LM首先需要一个预训练语言模型,通过大量的语料去训练出基础模型,对于ChatGPT来说就是GPT-3。还有一个可选的Human Augmented Text,又叫Fine-tune。

女王の专属领地 5万+

Red Teaming Language Models with Language Models

语言模型(LM)是一种有前途的工具,能应用到各种场景,从对话助手到问答系统。但是,在生产中部署LM会以难以预测的方式伤害用户。例如,在对抗用户激活了聊天机器人Tay,并向5000个关注者发送种族歧视和性相关推文后,Microsoft关闭了该系统。其他工作已经发现,LM会从训练语料中产生错误信息,机密及个人信息(例如社会保险号)。这种行为会产生严重的后果,因此在部署前发现和解决这些行为至关重要。先前的工作要求人工标注者手动发现这些行为,但是这限制了有害样例的数量和多样性。

nopSled 1812

osgEarth添加线特征

部分关键代码: osgEarth::Annotation::FeatureNode* pathNode = 0; osgEarth::Symbology::Geometry* path = new osgEarth::Symbology::LineString(); Track*track = dynamic_cast<Track*>(entity->getProperty(PS_TRACK)); if (track == nullptr) { return; } st.

wb175208的专栏 2968

无源定位之时差估计的精确时差估计算法(ETDE)及MATLAB实现程序

时差估计算法之精确时差估计(ETDE)欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想

伊谢尔伦的林中小路 4255

解读 ChatGPT 背后的技术重点:RLHF、IFT、CoT、红蓝对抗

我们调查了相关的所有重要论文,以对这些工作进行分类,总结迄今为止的工作,并对后续。通常,基础模型的语言建模目标不足以让模型学会以有用的方式遵循用户的指令。,在高质量的人类标注数据上微调基础语言模型,以提高有用性和无害性。则通常由模型创建者预先定义和开发,涵盖广泛的主题,包括伤害、歧视、错误信息。微调提高了模型在需要逐步思考的任务上的性能,并使它们在敏感话题上不那么回避。种书面指令及其输出,从而实现对基础模型的微调。者之间的工作是使用一小组高质量的种子数据集,然后进行自举生成最终数据集,如。

qarrylovy的博客 3956

MobileNet V3 图像分类

MobileNet V3

Henry的博客 1768

一块GPU搞定ChatGPT;ML系统入坑指南;理解GPU底层架构

1. 跑ChatGPT体量模型,从此只需一块GPU在发展技术,让大模型掌握更多能力的同时,也有人在尝试降低AI所需的算力资源。最近,一种名为FlexGen的技术因为「一块RTX 3090跑ChatGPT体量模型」而获得了人们的关注。虽然FlexGen加速后的大模型看起来仍然很慢 —— 跑1750亿参数的语言模型时每秒1个token,但令人印象深刻的是,它已经把不可能变成了可能。传统上,大型语言模型...

OneFlow深度学习框架 1万+

Burp Suite手工验证CORS漏洞的四步闭环法

CORS(跨域资源共享)是Web应用实现跨域通信的基础机制,其安全本质在于服务端对Origin头的校验逻辑与响应头组合的语义一致性。当服务端错误地返回Access-Control-Allow-Origin: *并配合Access-Control-Allow-Credentials: true,或采用弱校验(如字符串包含匹配)时,将导致敏感数据泄露与凭据劫持风险。该漏洞难以被自动化扫描器发现,因其依赖请求上下文、认证状态及动态策略判断。Burp Suite作为核心工具,需通过构造跨域请求、捕获预检响应、交叉验

weixin_30596343的博客 512

互联网摸鱼日报(2023-02-02)

英特尔大规模降薪:CEO降薪25%,小时工和底层员工不受影响数据库内核杂谈(二十六)- 精读 DynamoDB 2022 论文(1)为谷歌工作 16 年被当“垃圾”无情辞退,数千网友留言:为公司“卖命”不值得《2022 龙蜥操作系统生态用户实践精选 》谷歌开源部门裁员“大地震”:多名开源功臣粗暴被裁,61岁程序员被迫再求职顶会论文 | 虚拟网络探测技术的探索与实践Just:Spring Boot应用的新命令行界面《流浪地球2》里的修网剧情,放进现实里可能更刺激2022,又一批 AI 大牛从大厂出走了股东再削

weixin_43849685的博客 651

C# 接口和抽象类

文章目录1. 什么是接口和抽象类2. 接口与单元测试3. 依赖&耦合4. 依赖翻转5. 单元测试 1. 什么是接口和抽象类 接口和抽象类都是“软件工程产物” 具体类->抽象类->接口:越来越抽象,内部实现的东西越来越少 抽象类是未完全实现逻辑的类(可以有字段和非public成员,它们代表了“具体逻辑”) 抽象类为复用而生:专门作为基类来使用,也具有解耦功能 封装确定的,开放不确定的,推迟到合适的子类中去实现 接口是完全未实现逻辑的“类”(“纯虚类”;只有函数成员;成员全部publi

汽车电子软件领域知识分享 1013

什么是RLHF

*字面翻译:**RLHF (Reinforcement Learning from Human Feedback) ,即以强化学习方式依据人类反馈优化语言模型。强化学习从人类反馈(RLHF)是一种先进的AI系统训练方法,它将强化学习与人类反馈相结合。它是一种通过将人类训练师的智慧和经验纳入模型训练过程中,创建更健壮的学习过程的方法。该技术涉及使用人类反馈创建奖励信号,然后通过强化学习来改善模型的行为。

盖瑞理的智汇说 1万+

HFSS实战项目——高带外抑制特性SIW带通滤波器

本文对单级滤波器和双级滤波器的设计、工作原理及仿真结果进行了详细分析,并验证了双级SIW带通滤波器在性能方面的优越性,为微波通信系统中滤波器的设计和应用提供了重要参考。

2401_87464239的博客 1816

Challenge 6 - OSCP C

开放了161端口,直接snmpbulkwalk扫描得到账号密码试了那几个web端口,发现可以登录8083的vesta,但是需要用户名大写Jack接着登录之后里面可以创建计划任务,直接弄个反弹shell,一分钟回弹。得到shell后,运行linpeas.sh提供了几个可能的漏洞,挨个试一下。

羽的博客 4139

解读ChatGPT中的RLHF

无论是 ChatGPT 还是 GPT-4,它们的核心技术机制之一都是基于人类反馈的强化学习(Reinforcement Learning from Human Feedback,RLHF)。这是大型语言模型生成领域的新训练范式,即以强化学习方式依据人类反馈优化语言模型。那么,什么是 RLHF 呢?RLHF 背后的基本思想是采用预先训练好的语言模型,并让人们对其输出的结果进行排序。这个输出的排名作为...

我相信...... 3421

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

详解带RLHF的类ChatGPT:从TRL、ChatLLaMA到ColossalChat、DSC

如果未提供模板,则使用默认模板artifacts/generate_rewards.py,注:所有模板都必须保存在一个名为 .json 的 JSON 文件中templates.json。其中列表包含多个dictionaries,每个dictionary 对应一个数据样本,建议使用超过 1000 个数据样本来进行对actor的训练。在获得最终模型权重后,还可通过量化降低推理硬件成本,并启动在线推理服务,仅需单张约 4GB 显存的 GPU 即可完成 70 亿参数模型推理服务部署。

结构之法 算法之道 2万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

SFT、RLHF、DPO、IFT —— LLM 微调的进化之路

• SFT、RLHF 和 DPO 都是先估计 LLMs 本身的偏好,再与人类的偏好进行对齐;• SFT 只通过 LLMs 生成的下一个单词进行估计,而 RLHF 和 DPO 通过 LLMs 生成的完整句子进行估计,显然后者的估计会更准确;• 虽然 RLHF 和 DPO 取得比 SFT 好的结果,但代价是高昂的数据构造和计算资源开销;

mama19971023的博客 1359

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

大模型 | 通俗理解RLHF基础知识以及完整流程

AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享!

老皮的博客 5814

LLaMA2+RLHF=脆皮大模型?ICLR 2024高分投稿:多样性驱动的红蓝对抗

©PaperWeekly 原创 ·作者 |陈思硕单位 |北京大学研究方向 |自然语言处理导言:速览8888高分的红蓝对抗投稿红蓝对抗(Red Teaming,即设计让大模型输出不适当回答的 test cases,也可以叫对抗样本)是检测大模型安全性的重要手段,之前利用 RL 目标训练的语言模型(Red Teaming LM,红队模型)自动生成对抗样本忽视了生成的多样性目标,往往只会生成重复...

Paper weekly 1671

红队建设与备忘录

1.Red Teaming VS Penetration Testing VS漏洞测试 基于威胁的安全测试方法可能使用多个名称;红队、威胁操作、威胁评估、紫队、对抗评估、渗透测试、漏洞测试。这些并非完全相同,安全行业定义用于建立共同理解的术语非常重要。为了解决这个问题,本文中所有基于威胁的安全测试都将被称为Red Teaming。 定义:红色团队是使用战术、技术和过程(TTP)来模拟现实世界...

渗透测试研究中心 498

RLHF | 想训练ChatGPT?先来看看强化学习+语言模型吧(附源码)

每天给你送来NLP技术干货!作者简介作者:何枝原文:https://zhuanlan.zhihu.com/p/595116794排版:关于NLP那些你不知道的事随着最近 ChatGPT 的大火,越来越多人开始关注其中用到的RLHF(Reinforcement Learning from Human Feedback)这一核心思想。使用强化学习(而非监督学习)的方式更新语言模型,最大的优势是在于能...

zenRRan的博客 4208

ChatGPT训练三阶段与RLHF的威力

在探讨“ChatGPT为什么能够捕捉我们的想象力”的文献中,一般可以看到两种说法:规模化为其提供更多的数据和计算资源;提示界面转向更自然聊天界面的用户体验。然而,人们常忽略了这样一个事实,即:创造像ChatGPT这样的模型需要令人难以置信的技术创造力。其中一个很酷的想法是RLHF(Reinforcement Learning from Human Feedback,人类反馈的强化学习):将强化学习...

OneFlow深度学习框架 4124
上一篇: ChatGPT修bug横扫全场,准确率达78%!网友:程序员要开心了
下一篇: 高中没毕业,用Java实现财务自由!
IT界那些事儿
博客等级 码龄6年 2万+粉丝 22原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值