算法工程师深度解构ChatGPT技术

news2024/11/19 7:30:29

e694660db15892c506fe4fe1d3173686.jpeg

引言 | 本栏目特邀腾讯知名语言文本项目算法工程师冉昱、薛晨,用专业视野带你由浅入深了解ChatGPT技术全貌。它经历了什么训练过程?成功关键技术是什么?将如何带动行业的变革?开发者如何借鉴ChatGPT思路和技术,投入到日常工作中?期望本文能给你新的灵感。


272ff0fde19aedd0ed74f21d0c6473fe.jpeg

ChatGPT主要特点

ChatGPT本质是一个对话模型,它可以回答日常问题、进行多轮闲聊,也可以承认错误回复、挑战不正确的问题,甚至会拒绝不适当的请求。在上周公布博文和试用接口后,ChatGPT很快以令人惊叹的对话能力“引爆”网络。


1)ChatGPT的技术背景

ChatGPT目前未释出论文文献,仅释出了介绍博文和试用API。从博文中提供的技术点和示意图来看,它与今年初公布的InstructGPT 核心思想一致。其关键能力来自三个方面:强大的基座大模型能力(InstructGPT),高质量的真实数据(干净且丰富),强化学习(PPO算法)。以上ChatGPT成功的三个要素,具体将在文中第2部分详细展开。

2)ChatGPT的主要特点

让用户印象最深刻的是它有强大的语言理解和生成系统。其对话能力、文本生成能力、对不同语言表述的理解均很出色。它以对话为载体,可以回答多种多样的日常问题,对于多轮对话历史的记忆能力和篇幅增强。其次,与GPT3等大模型相比,ChatGPT回答更全面,可以多角度全方位进行回答和阐述,相较以往的大模型,知识被“挖掘”得更充分。它能降低了人类学习成本和节省时间成本,可以满足人类大部分日常需求,比如快速为人类改写确定目标的文字、大篇幅续写和生成小说、快速定位代码的bug等。

值得一提的事,它具有安全机制和去除偏见能力。下图这类问题在以前的大模型中时常出现,然而ChatGPT在这两点上增加了过滤处理机制。针对不适当的提问和请求,它可以做出拒绝和“圆滑”的回复。例如对于违法行为的提问:

68c05ac64a5cc9805885d499953e4f4f.pnga9a30b8e04407846c120eb2754b32b8f.png

对于未知事物的“拒绝”:

0c2941a712d9a52c112975c0c8a26f1f.png

当然ChatGPT并非十全十美,其缺点也比较明显。首先,其简单的逻辑问题错误依旧明显存在,发挥不够稳定(但总体比GPT3好很多)。特别在有对话历史时,它容易因被用户误导而动摇。      

00b186aa5ae4f52114d73ecc74a15f78.png

其次,ChatGPT有时会给出看似合理、但并不正确或甚至荒谬的答案。部分答案需要自行甄别才能判断正误,特别当本身用户处于未知状态来咨询模型时,更加无法判断真伪。ChatGPT使得生产者可以用较低成本增加错误信息,而这一固有缺点已经造成了一些实际影响。编程问答网站 StackOverflow 宣布暂时禁止用户发布来自 ChatGPT 生成的内容,网站 mods 表示:看似合理但实际上错误的回复数量太多,已经超过了网站的承受能力。

此外,它抵抗不安全的prompt能力较差,还存在过分猜测用户意图的问题。这主要体现在当用户提问意图不明确时,ChatGPT会猜测用户意图,理想情况应为要求用户澄清;当用户意图不明确时,很大概率给出不合适的回复。大批量的用户反馈,ChatGPT部分回复废话较多、句式固定。它通常过度使用一些常见的短语和句式。这与构造训练数据时,用户倾向于选择更长的回复有关。

47900232fcf195fb3e556c47dc490223.jpeg

ChatGPT的工作原理

1)ChatGPT的训练过程

ChatGPT训练过程很清晰,主要分为三个步骤,示意如图所示:

ecf49132f87912e0bde7ddd5b2636304.png

第一步,使用有监督学习方式,基于GPT3.5微调训练一个初始模型,训练数据约为2w~3w量级(此处为推测量级,我们根据兄弟模型InstructGPT的训练数据量级估算)。由标注师分别扮演用户和聊天机器人,产生人工精标的多轮对话数据。值得注意的是,在人类扮演聊天机器人时,会得到机器生成的一些建议来帮助人类撰写自己的回复,以此提高撰写标注效率。

以上精标的训练数据虽然数据量不大,但质量和多样性非常高,且来自真实世界数据,这是很关键的一点。

第二步,收集相同上文下,根据回复质量进行排序的数据:即随机抽取一大批Prompt,使用第一阶段微调模型,产生多个不同回答:347dc2051614680d9b6fee71f8946517.png,e0ffea94404c05bb1b964dfdce693010.png,5859b8f4dede00710dc8a9dab0d205b2.png035c27a396c467f63175b2acd2b74cac.png,之后标注人员对k个结果排序,形成3aff03d05d44c0c9bba2f8c4e8e3d7ce.png组训练数据对。之后使用pairwise loss来训练奖励模型,可以预测出标注者更喜欢哪个输出。"从比较中"学习可以给出相对精确的奖励值

这一步使得ChatGPT从命令驱动转向了意图驱动。关于这一点,李宏毅老师的原话称,“它会不断引导GPT说人类要他说的”。另外,训练数据不需过多,维持在万量级即可。因为它不需要穷尽所有的问题,只要告诉模型人类的喜好,强化模型意图驱动的能力就行。

第三步,使用PPO强化学习策略来微调第一阶段的模型。这里的核心思想是随机抽取新的Prompt,用第二阶段的Reward Model给产生的回答打分。这个分数即回答的整体reward,进而将此reward回传,由此产生的策略梯度可以更新PPO模型参数。整个过程迭代数次直到模型收敛。

强化学习算法可以简单理解为通过调整模型参数,使模型得到最大的奖励(reward),最大奖励意味着此时的回复最符合人工的选择取向。而对于PPO,我们知道它是2017年OpenAI提出的一种新型的强化学习策略优化的算法即可。它提出了新的目标函数,可以在多个训练步骤实现小批量的更新,其实现简单、易于理解、性能稳定、能同时处理离散/连续动作空间问题、利于大规模训练。

以上三个步骤即ChatGPT的训练过程,合称为文献中提到的RLHF技术

2)ChatGPT为何成功?

为何三段式的训练方法就可以让ChatGPT如此强大?其实,以上的训练过程蕴含了上文我们提到的关键点,而这些关键点正是ChatGPT成功的原因:

  • 强大的基座模型能力(InstructGPT)

  • 大参数语言模型(GPT3.5)

  • 高质量的真实数据(精标的多轮对话数据和比较排序数据)

  • 性能稳定的强化学习算法(PPO算法)

我们需要注意的是,chatGPT的成功,是在前期大量工作基础上实现的,非凭空产生的“惊雷”。下面我们将针对性阐述:

  • InstructGPT

ChatGPT是InstructGPT的兄弟模型(sibling model),后者经过训练以遵循Prompt中的指令,从而提供详细的响应。InstructGPT是OpenAI在今年3月在文献 Training language models to follow instructions with human feedback 中提出的工作。其整体流程和以上的ChatGPT流程基本相同,但是在数据收集、基座模型(GPT3 vs GPT 3.5)以及第三步初始化PPO模型时略有不同。

此篇可以视为RLHF 1.0的收官之作。一方面,从官网来看,这篇文章之后暂时没有发布RLHF的新研究,另一方面这篇文章也佐证了Instruction Tuning的有效性。

InstuctGPT的工作与ChatGPT类似:给定Instruction且需要人工写回答。首先工作人员训练了一个InstructGPT的早期版本,使用完全人工标注的数据,分3类:Instruction+Answer、Instruction+多个examples 和用户在使用API过程中提出的需求。从第二类数据的标注,推测ChatGPT可能用检索来提供多个In Context Learning的示例,供人工标注。剩余步骤与以上ChatGPT相同。

尤其需要重视但往往容易被忽视的是,OpenAI对于数据质量和数据泛化性的把控。这也是OpenAI的一大优势:寻找高质量标注者——寻找在识别和回应敏感提示的能力筛选测试中,表现良好的labeler;使用集外标注者保证泛化性——即用未经历以上1)步骤的更广大群体的标注者对训练数据进行验证,保证训练数据与更广泛群体的偏好一致。

在完成以上工作后,我们可以来看看InstuctGPT与GPT3的区别:

bfa4a25ce759f31cb80c9da57ad59008.png

GPT3的回答简短,回复过于通俗毫无亮点。而InstructGPT“侃侃而谈”,解释自由主义为何愚蠢,显然模型学到了对于此类问题人们更想要的长篇大论的回答。

GPT3只是个语言模型,它被用来预测下一个单词,丝毫没有考虑用户想要的答案;当使用代表用户喜好的三类人工标注为微调数据后,1.3B参数的InstructGPT在多场景下的效果超越175B的GPT3:

f74fc61cd74ad4af8c1273494b13d634.png

4e4a4ff8d3d65d9dd5dad2394e72d7fb.png

InstuctGPT的工作也很有开创性:它在“解锁”(unlock)和挖掘GPT3学到的海量数据中的知识和能力,但这些仅通过快速的In-context的方式较难获得。InstuctGPT找到了一种面向主观任务来挖掘GPT3强大语言能力的方式。

OpenAI博文中有这样一段原话:当我们要解决的安全和对齐问题是复杂和主观,它的好坏无法完全被自动指标衡量的时候,此时需要用人类的偏好来作为奖励信号来微调我们的模型。

  • InstuctGPT的前序工作:GPT与强化学习的结合

       其实在2019年GPT2出世后,OpenAI就有尝试结合GPT-2和强化学习。NeurIPS 2020的 Learning to Summarize with Human Feedback 工作中写道,OpenAI在摘要生成时,利用了从人类反馈中的强化学习来训练。可以从这篇工作的整体流程图中,看出三步走的核心思想:收集反馈数据 -> 训练奖励模型 -> PPO强化学习

18e7368d919332acd04e38754665056e.png

RLHF第一阶段是针对多个候选摘要人工排序(这里就体现出OpenAI的钞能力,按标注时间计费,标注过快的会被开除);第二阶段是训练排序模型(依旧使用GPT模型);第三阶段是利用PPO算法学习Policy(在摘要任务上微调过的GPT)。

文中模型可以产生比10倍更大模型容量更好的摘要效果。但文中也同样指出,模型的成功部分归功于增大了奖励模型的规模。但这需要很大量级的计算资源——训练6.7B的强化学习模型需要320 GPU-days的成本。

2020年初的OpenAI的Fine-Tuning GPT-2 from Human Preferences可看出,它同样首先利用预训练模型来训练reward模型,进而使用PPO策略进行强化学习。整体步骤初见ChatGPT的雏形!

f3bd233ad03cbcb7faa49d6c9a9fa231.png

而RLHF(reinforcement learning from human feedback )的思想,是在2017年6月的OpenAI Deep Reinforcement Learning from Human Preferences工作提出的。其核心思想是利用人类的反馈判断最接近视频行为目标的片段;通过训练来找到最能解释人类判断的奖励函数,然后使用RL来学习如何实现这个目标。

b4ccf7aa4260f56817b801852c9d179f.png

可以说,ChatGPT是站在InstructGPT以及以上理论的肩膀上完成的一项出色的工作,它们将LLM(large language model)/PTM(pretrain language model)与RL(reinforcement learning)出色结合证明这条方向可行。当然,这也是未来还将持续发展的NLP甚至通用智能体的方向。

  • PPO

PPO(Proximal Policy Optimization) 一种新型的Policy Gradient算法(Policy Gradient是一种强化学习算法,通过优化智能体的行为策略来解决在环境中实现目标的问题)。我们只需了解普通的Policy Gradient算法对步长十分敏感,但是又难以选择合适的步长。在训练过程中新旧策略的的变化差异如果过大则不利于学习。

而PPO提出了新的目标函数可以在多个训练步骤实现小批量的更新,解决了Policy Gradient算法中步长难以确定的问题。由于其实现简单、性能稳定、能同时处理离散/连续动作空间问题、利于大规模训练等优势,近年来受到广泛关注,成为OpenAI默认强化学习算法。

  • WebGPT和CICERO

近两年,利用LLM+RL以及对强化学习和NLP训练的研究,各大巨头在这个领域做了非常多扎实的工作,而这些成果和ChatGPT一样都有可圈可点之处。这里以OpenAI的WebGPT和Meta的Cicero为例。

WebGPT是2021年底OpenAI的工作。其核心思想是使用GPT3模型强大的生成能力,学习人类使用搜索引擎的一系列行为,通过训练奖励模型来预测人类的偏好,使WebGPT可以自己搜索网页来回答开放域的问题,而产生的答案尽可能满足人类的喜好。

Cicero是Meta AI上个月发布的可以以人类水平玩文字策略游戏的AI系统,。其同样可以与人类互动,可以使用战略推理和自然语言与人类在游戏玩法中进行互动和竞争。Cicero的核心是由一个对话引擎和一个战略推理引擎共同驱动的,而战略推理引擎集中使用了RL,对话引擎与GPT3类似。

68addcf66d4fa496e883d99004553323.png

Meta原blog中写道:The technology behind CICERO could one day lead to more intelligent assistants in the physical and virtual worlds.

而以上也是我们未来力求突破的方向和愿景:一个真正全方位的智能的文字助手

83689afb2e3766aa8584e69717256274.jpeg

ChatGPT应用和思考

1)ChatGPT应用

  • ChatGPT对于文字模态的AIGC应用具有重要意义

它可以依附于对话形态的产品和载体大有空间,包括但不限于内容创作、客服机器人、虚拟人、机器翻译、游戏、社交、教育、家庭陪护等领域。这些或许都将是 ChatGPT 能快速落地的方向。

其中有些方向会涉及到交互的全面改革,比如机器翻译不再是传统的文本输入->实时翻译,而是随时以助手问答的形式出现。甚至给出一个大概笼统的中文意思,让机器给出对应英文。目前我们目前所做的写作产品,可能也会涉及创作模式的改变和革新。

有些方向会全面提升产品质量,比如已存在的客服机器人、虚拟人等。

  • ChatGPT作为文字形态的基础模型,自然可以与其他多模态结合

比如最近同为火热的Stable Diffusion模型,利用ChatGPT生成较佳的Prompt,对于AIGC内容和日趋火热的艺术创作,提供强大的文字形态的动力。

  • ChatGPT对于搜索引擎的代替性:ChatGPT可以作为搜索引擎的有效补充

但至于是否能代替搜索引擎(不少人关注的地方),抛开推理成本不谈,目前只从效果上来说为时尚早。

对于网络有答案的query,抽取就完全能满足,现友商最近就有这样的功能。网络上没有明确答案,即使检索了相关材料(ChatGPT应该还没有这样的功能),也没人能保证生成结果的可信度。

  • ChatGPT本身的升级

与WebGPT的结合对信息进行实时更新,并且对于事实真假进行判断。现在的ChatGPT没有实时更新和事实判断能力,而这如果结合WebGPT的自动搜索能力,让ChatGPT学会自己去海量知识库中探索和学习,预测可能会是GPT-4的一项能力。

还有其他更多方向,包括ChatGPT与最近数理逻辑工作的结合。此处受个人思维所限,无法一一列举。

2)关于ChatGPT的思考

参考上文所述,以及参阅近2年OpenAI GPT语言模型相关的文章,RLHF的方法效果显著,ChatGPT成功的核心也在于基于LLM(Large language model)的RLHF(Reinforcement Learning from Human Feedback)。可以说,RLHF是一个很有希望且有趣的方向;强化学习在即将发布的GPT-4中大概率扮演这关键角色。

结合对于ChatGPT的看法,我们从算法和行业更新角度做出了阐述:

首先,对于ChatGPT的规模目前没有更多信息支撑,所以无法明确如此智能的ChatGPT是在何规模下达成的。

最早的175B的GPT-3代号是Davinci,其他大小的模型有不同的代号。然而自此之后的代号几乎是一片迷雾,不仅没有任何论文,官方的介绍性博客也没有。OpenAI称Davinci-text-002/003是GPT-3.5,而它们均为InstrucGPT类型的模型,ChatGPT是基于其中一个微调模型得到,由此推测ChatGPT可能是千亿模型。

其次,ChatGPT不完全算突破式的创新,是OpenAI一步一步扎实工作积累得到的几乎理所当然的结果,属于这两年业界发展的成果汇总。

大家一般没有机会接触千亿模型(之前有较少开源的千亿模型,GPT-3也是收费的),不了解现在千亿模型的能力边界,对全量微调这个级别的模型也无从估计。以Bert和T5为代表的早期Transformer,和现在的大模型已不是一个量级。事实上11月28日OpenAI上新了text-davinci-003,但几乎没有引起国内任何讨论。如果ChatGPT(11-30发布)不是免费试用,或许也不会引起这么大的反响。

同一时期的工作还有Deepmind的Sparrow和Google的LaMDA,效果与ChatGPT应该不相上下。同样以上提到的WebGPT和Cicero也在国内没有太大的水花。这两年LLM发展已经到了这个层级,或许因为成本或者工程化难度的问题,某种层面上在国内被忽视了。而此次ChatGPT正好找到了好的“曝光点”,一炮而红。

所以,一方面我们要理性看待ChatGPT的成果,但另一方面ChatGPT的出现,会将我们的认识和国外先进思想拉到一条线上,我们应该思考如何利用这些令人激动的最新成果,而其中关键是如何找到适合我们入口的方式。

第三,数据处理不是简单的标注,优秀的数据也是一种极大的优势。除去技术上的考量,OpenAI很少开源数据,显然他们在数据上也下了大功夫,训练语料质量和开源的C4或The Pile不能同日而语。

当然,我们目前核心使用的开源千亿模型,有很多待挖掘的能力。由于其在微调任务中缺乏生成式的对话和问答,某些表现不如ChatGPT也在预料之中。但是对于很多任务来说,配合In-context Learning,这个差距会被进一步缩小。

3)如何借鉴和使用ChatGPT

对于ChatGPT的借鉴和使用,大致可以归类以下四个方向:

  • 直接使用层面

此层面为复用API中效果极佳的部分,直接使用的优势是可以快速实现多粒度多层级功能需求。在很多需求难以定义清晰、数据难以获得的情况下,复用并包装这样的功能一本万利。

当然其缺点也很明显。直接调用成本是极高的,根据GPT3.5(Davinci)的成本推测:1k tokens≈700 words为0.02美元。换算后,一篇2k字的文章直接调用需要0.4人民币。若保守按照日活1w用户、人均10篇文章计算,则每日调用成本为:10000*10*0.4=40000元。虽成本过于高昂,但实现时间最少。

68826b97790c5570548fe0957431fdf1.png

另外,根据Musk Twitter上与OpenAI工作人员的对话,也可以看到每次聊天过程需要几美分的成本,所以ChatGPT直接调用成本极高。

f6b41674dcd788f30f59b8431e3610b4.png

  • 间接使用层面

此层面核心思想是利用OpenAI接口,按照不同需求生成高质量数据,克服现有数据难获得的瓶颈;进而利用现有开源大模型进行数据扩增,这是目前比较切实,实现时间较少,是在时间成本和效果上折中的方式。

  • 思想借鉴

首先,组内目前有初步尝试参考RLHF的方法,如对多候选进行标注、利用得到的标注结果重新微调生成模型、或者增加排序阶段加入RL学习。其次,我们也尝试一些高效调参的方法微调现有大模型。但此条受限于资源尚需评估和确认。

总的来说,将改写从最初的seq2seq,拓展到GPT+Instruction Tuning路径。

实现时间:(1)< (2) < (3)

资源成本:(1)> (3) > (2)

  • 交互升级

将写作整体打造为ChatBot的形式,此核心思想见另一篇关于对话系统报告中的介绍,涉及到交互层面的变革。但ChatGPT的出现和核心技术让形式升级成为可能。随着深度学习和多智能体系统的发展,未来会有多种、多样、多功能的X-Bot出现。

👨‍👩‍👧‍👦有奖开放talk:你还能想到ChatGPT哪些用途?它还有什么应用价值?

欢迎在评论区聊一聊你的看法。我们将选取点赞量最高的3位朋友,送出腾讯云定制礼品一份。12月20日中午12点开奖。快邀请你的开发者朋友们一起来参与吧!

腾讯工程师技术干货直达:

1.太硬核!用大数据技术预测足球胜率

2.祖传代码重构:从25万行到5万行的血泪史

3.探秘微信业务优化:DDD从入门到实践

4.万字好文!带你入门 redis

后台回复“chatGPT”获得本篇作者推荐相关学习材料

251ab7c3659ab56d94080656f07ea625.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/77425.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

西门子PLC S7-1500产生精确时间戳及各种数据处理的方法

目录 1、完整程序 2、将时钟转换成整型数 3、获取相对时间 4、转成微秒&#xff08;μs&#xff09;&#xff0c;并转成32位无符号整数 5、翻转的问题 6、有时间戳采集时的对时机制 在数据采集时&#xff0c;精准的相对时间是非常重要的。尤其是高速采集时&#xff0c;上位…

算法训练第四十五天 | LeetCode 70、322、279背包问题

LeetCode 70爬楼梯 题目简析&#xff1a; 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 思路分析&#xff1a; 用完全背包的思路来做&#xff0c;见注释 //普通dppublic int climbStairs(in…

Redis框架(四):大众点评项目 基于Redis的短信登录

大众点评项目 基于Session的短信登录需求&#xff1a;基于Redis实现短信验证登录基于Redis的短信登录实战优化为Redis login方法配置拦截器实现双重验证配置类实现异步/排序 拦截结果展示SpringCloud章节复习已经过去&#xff0c;新的章节Redis开始了&#xff0c;这个章节中将会…

【图像处理】DWT图像处理【含Matlab源码 198期】

⛄一、数字图像处理简介 图像处理基础教程链接 1 【基础教程】基于matlab图像处理&#xff08;表示方法数据结构基本格式类型转换读取点运算代数运算&#xff09;【含Matlab源码 834期】 2 【基础教程】基于matlab图像处理&#xff08;读写显示运算转换变换增强滤波分析统计&a…

jvm学习笔记(一)----jvm简史

文章目录1. JVM简单介绍2. java虚拟机介绍1. JVM简单介绍 虚拟机是一种抽象化的计算机&#xff0c;通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构&#xff0c;如处理器、堆栈、寄存器等&#xff0c;还具有相应的指令系统。Java虚拟机屏…

ASP.NET微信快速开发框架源码【源码分享】

ASP.NET微信快速开发框架源码 微信公众平台快速开发框架源码 需要源码学习&#xff0c;查看文末卡片获取&#xff0c;或私信我。 框架主要技术&#xff1a; ASP.NET MVC5、ASP.NET Identity、Bootstrap、KnockoutJs、Entity Framework等。 主要特色&#xff1a; 1、快速迭代开…

Redis主从复制原理

前面的文章中我们演示过Redis主从配置的操作&#xff0c;可以查看之前的博文Redis主从配置教程。这篇文章主要介绍一下Redis主从复制的工作过程和原理。 Redis复制工作过程 Redis复制的工作过程如上图&#xff0c;主要包含以及几个阶段&#xff1a; 1. 设置IP端口并建立连接 …

C++学习笔记(十九)——stack和queue的模拟实现

容器适配器 deque的简单介绍 stack的模拟实现 queue的模拟实现 容器适配器 适配器:一种设计模式,该种模式是将一个类的接口转换成客户希望的另外一个接口. stack和queue的底层结构 可以看出的是,这两个容器 相比我们之间见过的容器多了一个模板参数,也就是容器类的模板参数,…

数据结构复习+答案

一、选择题&#xff1a;&#xff08;每小题2分&#xff0c;共30分&#xff09; 1、在数据的逻辑结构中&#xff0c;树结构和图结构都是&#xff08; &#xff09; A.非线性结构 B.线性结构 C.动态结构 D.静态结构 2.在一个长度为n的顺序表中插入一个元素的算法的时间复杂度为&…

ThinkPHP文件包含漏洞分析

出品|长白山攻防实验室(ID:A_Tree&#xff09; 0x00 声明 以下内容&#xff0c;来自长白山攻防实验室的A_Tree作者原创&#xff0c;由于传播&#xff0c;利用此文所提供的信息而造成的任何直接或间接的后果和损失&#xff0c;均由使用者本人负责&#xff0c;长白山攻防实验室…

全宇宙最强AI 聊天机器人模型ChatGPT惊艳来袭,你还不上车?居然能写演讲稿和帮忙写代码

目录1、ChatGPT介绍2、ChatGPT如何注册&#xff0c;国内不可用3、VS Code下载安装ChatGPT3.1 打开VS Code找到ChatGPT3.2 ChatGPT 详细安装步骤&#xff1a;3.3 用法3.4 国外模式’ 此模式下&#xff0c;速度会比较稳定&#xff0c;如果有条件&#xff0c;建议使用本模式。 理论…

大数据HDFS凭啥能存下百亿数据?

前言 大家平时经常用的百度网盘存放电影、照片、文档等&#xff0c;那有想过百度网盘是如何存下那么多文件的呢&#xff1f;难到是用一台计算机器存的吗&#xff1f;那得多大磁盘啊&#xff1f;显然不是的&#xff0c;那本文就带大家揭秘。 分布式存储思想 既然一台机器的存储…

Spring 核心与设计思想 · Spring IoC容器 · 控制反转式程序开发 · DI概念

Spring 是什么&#xff1f;一、什么是容器&#xff1f;二、什么是 IoC&#xff1f;2.1 传统程序开发2.2 控制反转式程序开发2.3 对比总结规律三、理解 Spring IoC四、DI 概念说明Spring 是什么&#xff1f; 我们通常说的 Spring 是指 Spring Framework&#xff08;Spring 框架…

【Mysql】知识体系结构构建以及常见考题汇总

【Mysql】知识体系结构构建以及常见考题汇总1、基本SQL知识1.1、D_L语法以及表中常用约束1.2、mysql表列常用数据结构1.3、事务&#xff08;此处展示并发事务问题以及解决方案、实现原理见2.3&#xff09;read uncommitted有脏读问题read committed解决脏读、有不可重复读问题r…

Android基础学习(二十)—— 线程安全

1、Android中线程的常见用法 &#xff08;1&#xff09;继承 Thread class MyThread extends Thread{Overridepublic void run(){//处理具体的逻辑} } new MyThread().start(); //启动此线程//使用匿名类 new Thread(){Overridepublic void run(){//处理具体的逻辑} }.star…

【加油站会员管理小程序】03 创建应用

我们上一篇介绍了数据源的创建&#xff0c;本篇我们介绍应用的创建。 微搭低代码中一共有两类应用&#xff0c;一类是数据模型应用&#xff0c;一类是自定义应用。数据模型应用往往对应着PC端的管理后台&#xff0c;例如我们的小程序通常需要一个管理后台来录入数据。 自定义…

【linux】2022年还能用,网易真的是良心啊,网易云音乐linux版本现在还是可以使用的超赞!!官方网的下载地址还可以使用,音乐使用的是qt5进行开发的。

目录前言1&#xff0c;关于网易云音乐2&#xff0c;可以正常使用&#xff0c;可以登录前言 本文的原文连接是: https://blog.csdn.net/freewebsys/article/details/128261513 未经博主允许不得转载。 博主CSDN地址是&#xff1a;https://blog.csdn.net/freewebsys 博主掘金地址…

vue.js:父子组件的实训案例

作业需求 需求1&#xff1a;定义两个输入框&#xff0c;通过输入框输输入的值改变页面显示的值需求2&#xff1a;改变第一个输入框的值的同时使得第二个输入框的值变为100倍并显示需求3&#xff1a;改变第二个输入框的值的同时使得第一个输入框的值变为1/100并显示 实训代码实…

CentOS搭建基于ZIPKIN的数据追踪系统

ZipKin入门介绍 Zipkin是一款开源的分布式实时数据追踪系统&#xff08;Distributed Tracking System&#xff09;&#xff0c;基于 Google Dapper的论文设计而来&#xff0c;由 Twitter 公司开发贡献。其主要功能是聚集来自各个异构系统的实时监控数据。分布式跟踪系统还有其…

TinUI4.0发布

引言 TinUI4登场~~~ 更新一览&#xff1a; 优化radiobox效果修复listview返回元素不全的问题新增树状图 treeview使用TinUI LOGO.ico新增普通图片 image随包发布 TinUI帮助手册 实用程序&#xff0c;在\test目录下 修复 这是常规更新&#xff0c;修复了listview创建过程中…