当前位置: 首页 > news >正文

前x-ai首席科学家karpathy的从零构建ChatGPT视频学习笔记--8000字长图文笔记预警(手打纯干货,通俗易懂)

2025.2.17晚上21:57看完了整个视频,作为一个ai专业的学生虽然每天都在用ai,但是对于其背后的原理却不是那么清楚,而卡帕西的这支视频却让我醍醐灌顶,而且全程听起来很舒服,没有知识强行进入脑子的痛感,在他的讲解下一切都是那么的自然,所有内容娓娓道来,感谢karpathy的讲解,记住他的提醒,ai只是你的工具,他并不神秘。

AI 大神Karpathy再发LLM介绍视频,入门必看!_哔哩哔哩_bilibili

那么好,接下来就是我对这个视频的学习笔记部分了,我将根据视频内容分为四个部分,按顺序来分别是pre training,post training,rl,other

一、预训练(0:00:00-1:00:00)

视频主旨是介绍到底什么是llm,我们在使用的时候需要注意什么缺陷,你在和他对话的时候究竟是在和一个什么样的东西说话。

如何构建一个chatgpt?

  1. 下载和处理互联网数据,网站:huggingface/fineweb,讲解如何构建一份互联网数据。本质上是爬虫,爬取互联网上的高质量文档。common crawl是一个互联网组织,做的事情就是扫描索引互联网上的各种网页,跟踪链接,最终就拿到了很多互联网数据。

    1. 然后开始过滤。首先是URL过滤,过滤到你不想要的网站。然后是文本提取,从html中提取出文本,也就是说去掉各种各样的修饰。那么在这一步其实公司就可以控制自己模型对于语言的侧重,比如我排除掉中文网页,那么模型在最后的中文表现一定很垃圾,还有很多步骤,但是总体来说是这样的流程。
    2. 最后讲这些文本连接在一起,就形成了一个纯文字的txt文本,相当震撼。我们开始用它训练神经网络,这样神经网络就可以内化并建模这些文本的流动方式。

    请添加图片描述

  2. 决定如何表示这些文本,以及如何输入它

    1. 因为这些神经网络接受一维的符号序列,虽然这些文本已经是连续的一维序列了,但是计算机本质上只能接受0和1,所以我们需要用数字来表示。并且这个序列我们不想让他仅有0和1两个字符,这样序列也会太长,那会占用大量的资源,我们需要去权衡这个词汇表的数量。
    2. 当我们将每8个bit看做一个处理单元(现在还没有引入token的概念)的时候,就把序列长度缩短了8倍,数字大小在0~255之间。这里我们严重可以讲这些数字看作为一个独特的emoji
    3. 在制作现代的大模型的时候,我们为了继续缩短序列长度,可以表达出更多的emoji,我们会寻找非常常见的连续字符,举个例子,“你”和“好”就经常一起出现,那么我们就可以把他俩组合成一个新的emoji,编号为256.以此类推,现在的大模型词汇表大小量级在10万左右(gpt4:100277)
    4. 文本转化成这些emoji的过程,我们就称之为tokenization(标记化)
    5. 形象的观察gpt是如何进行标记化的,登录:https://tiktokenizer.vercel.app

    请添加图片描述

    我们在这里就可以看到之前很火的一个问题strawberry有几个r,在这里就被分成了三个token,这个问题后面我们会再次谈到。还可以试试hello world等等词语,很有意思的一个观察,获得对“token”的一个直观感受。连不同数量的空格对应的都有独特的token.在gpt中就一共有10万个这样的token

  3. nerural network training

    1. 在这一步我们是要建模这些token在序列中如何相互跟随的统计关系。我们在数据海洋中随机选择一段文本,同时长度大小(也叫窗口长度)不易过大,窗口的长度可以在0-max之间随便变化,一般max就是取4千8千这种,处理太多的token在计算上是expensive。
    2. 比如说我现在去了4个token作为模型输入了,剩下的就是和学过的深度学习一样,降低loss,让预测和实际的下一个token一样。注意,这里的4个token就称为context(上下文)。模型的输出是这100277个token分别对应的概率。整个网络在训练过程中正在并行的重演无数次这样的预测和改进。
    3. 神经网络内部的样子:

    请添加图片描述

    这个网络中的参数在一开始是随机的,但是在训练过后就会逐渐形成训练文本中的统计关系。你可以想象这个网络就像DJ的调音台,你不断微调这个调音台上的各种参数旋钮,最终能够演奏出曲风相似的音乐来

    想要观看一个实际的生产级示例,这个网站:https://bbycroft.net/llm,展示了具体的模型,但是内部的模型结构并不是我们关注的焦点,因为这个教程是面向非技术人员的,具体的技术分析会放在另外的笔记中
    4. 推理部分:算法和训练是一模一样的,只是参数不用再变化。karpathy在讲的时候也始终保持着通俗易懂的讲法,比如在推理时我们输入一些token,然后模型开始根据这些token掷硬币,将可能性最大的硬币选出来,必须强调,这是个随机系统!所以我们并不太可能完全重现我们训练文本中的内容,模型学到的其实是一种有损压缩ok吧。
    5. 在实际过程中我们在训练时会尝试不同种类设置,不同种类排列,和不同尺寸的网络。当有一个好的参数的时候,你就ship他,嘻嘻。
    6. GPT-2 从现在的视角来看gpt-2和现在的模型并没有什么区别,只是所有东西都变得更大。token的最大上下文才是1024个,意味着无论是训练还是推的时候他的窗口大小都不会差过1024.上下文和窗口的含义略有区别,在这里做一些严谨的定义

    总结来说:

    上下文是模型理解和生成的内容,它是动态的,取决于模型正在处理的文本。

    窗口是一个固定大小的滑动范围,它限定了模型能看到的上下文的长度。

    请添加图片描述

    1. 记住,重要指标就是loss,越低越好,就能更好的预测下一个标记。这样训练出来的模型叫做基础模型 base model ,他只是一种互联网文本的模拟器,并不是我们现在常用的assitant,可以在大模型实验场试一下这两类模型的回答,相当明显的区别
    2. base model vs instruct model 他俩的区别可能用具体的回答来展示更为直观。虽然base model并不能像chatgpt一样正常回答问题,但是还是可以通过设计完成一些任务(虽然我觉得没什么必要)

二、后训练:监督微调(1:00:00-2:07:00)

post training在计算上比预训练要便宜的多,在这里我们讲一个模型变成一个助手。

具体做法就是给他一些人类对话的数据集,让模型学习,完全相同的算法,只是换了一下数据集。在这个过程中有一些和前面相关联的知识点

  1. 对话的分词处理,我们制定一个规则或者数据结构,将对话编码为token

    请添加图片描述

    如图所示的 <|im_start>就是一种显著的token,也是我们在后训练期间新增加的一个token,在那十万个token之中(所有句子只是那十万个token的排列组合而已,莫忘莫忘),以 <|im_end> 结束对话。这个方法的发明也是openai的杰作,发的有论文。

    kapathy在这里也非常哲学式地思考我们在和chatgpt对话的时候到底是在和什么对话?式给他标注对话数据集的人类么?只是人类标注者的模拟

  2. 幻觉

    1. 幻觉从何而来?因为在对话数据集中都是自信满满的回答,早期模型并没有学会说不哈哈,所以他必须继续依靠概率输出自己的回答,这就是所谓幻觉。但是如果在数据集中加入了对于不知道问题的回答示例,那么模型就能学会:在知道自己不知道的时候敢于说不知道。

    2. 首先要明确自己的模型不知道什么,搞清楚模型的知识边界(其实就是问很多问题,然后把所有他确实不知道的问题单独列成数据集进行训练);然后针对这些数据集进行“不知道”的回答。这样的做法听起来似乎非常简单,但是却很有用,因为在base模型中模型可能已经有了自我认知,你知道自己不知道某些事情,某些时候特定的几个神经元将会亮起,那个时候就应该是说不知道的时候了!只需要稍加演示他们就能学会。

    3. 缓解幻觉的第二个方法:加入网络搜索,也是加入一组新的token表示搜索,比如看到说<search_satrt> and <search_end>这种,就去执行搜索,讲搜索结果放进上下文。同样的,构造数据集让模型训练和学习。同时强化一个认知,就是大模型的记忆是对话联网知识的有损压缩,上下文是直接记忆,可以直接用的,无损的。因为当你需要更精确的内容的时候最好可以在上下文中直接给出参考资料而不是仅仅依靠他的记忆力。

      请添加图片描述

    4. 还有一点就是模型的自我认知,比如我们问deepseek他可能会回答自己是openai训练的,但实际上如果不预先训练的话,ai只是从训练资料中选择最佳回答,无疑openai和chatgpt是被提到最多的,他不知道自己是谁,只有给他看一些对话数据集才行哦。

    5. 关于如何让模型的数学计算能力变强?本质上这还是涉及到神经网络结构,及其计算方式。比如下面这道数学题,我们应该选择哪种解法放进训练集呢?肯定是第二种!第一种直接给出答案本质上就是在心算,因为都是根据前文的概率吐出下一个字,也就是说这个答案只是经验的结果;第二个解答过程就是一步一步的推导,得出最终答案之后模型已经经过了充分的思考,答案就更有可信度。更理论一点的来讲,每个token经过整个网络的计算量是有限的,在得到答案前尽可能多的思考肯定是有利的。其实我们多实验几个例子之后不难发现,让模型直接说出答案往往是错误答案。

      请添加图片描述

      包括模型的计数能力,查草莓的r,查。。。。的点数,都不会太好,一个是上面说的,模型的心算能力并不是很强,第二个原因就是模型都是token化的,查数也不友好,他们看不见字符,他的世界里只有token,或许我们将来会有一个字符级或字节级的模型,但是那样序列会很长,目前还不知道要如何处理。

      包括9.11和9.9比大小,这个有可能是圣经读太多了(bushi

三、强化学习(2:10:00)

大神在这解题节的开始用学生学习一本书承上启下:课本知识就像是预训练,例题就像是SFT,那么RL就是课后习题,给你答案,模型要自己找出最好的解题路径。

请添加图片描述

为什么这很重要?因为llm的语言与我们人类的语言并不相通,我们并不知道对于llm而言什么样的token排列方式能够更好的求解出答案,因此我们最好是让模型自己来摸索,根据最终答案来进行反馈,找到自己写题的最佳思考方式。

总结就是:认知不同,不要瞎掺合

RL的过程:比如让模型写一道题,尝试多次,每一次尝试都会生成不同的结果。假设结果如下图所示,有正确的有错误的,我们的目的是鼓励那些能得出正确答案的解决方案,所以就用这些正确的解题过程拿去训练模型(肯定要训练啊,不然模型现在不还是不会写这道题,方法论略有不同但思想一样)

请添加图片描述

所以在前面进行的SFT等一系列操作都是有必要的,相当于讲模型带到了正确解的附近,模型只需要开始尝试即可,有很大概率能写出正确答案,而强化学习就是那临门一脚!

deepseek是第一家公开赞扬强化学习对大模型作用的公司,引起了大家对于强化学习的信心,图为强化学习后的ds模型在AIME数学题上提升

请添加图片描述

而且模型在学习过程中用到的token也越来越多,这是自然而然的表现,模型在rl过程中学会了多角度思考和验证自己的思路,称为涌现。这都是模型自己学出来的,因为没有人类标注员在回答里面嵌入这些思考过程,amazing啊llm,aha moment

谈到强化学习,就绕不过去一个东西,alphago。当我们将目光投向AlphaGo的论文,发现了一个似曾相识的图表。。。

请添加图片描述

从图中可以看出,单纯的模仿并不能超越人类玩家,但是探索可以。

第37步:指神之一手,阿尔法狗打出来的。

四、杂谈(RLHF、Karpathy对未来的一些思考)(2:47:00-3:09:00是未来展望)

在不可验证领域,比如写作,讲笑话这种,不好直接打分,所以我们的解决方法是:

RLHF:(注意:他的本质当然是RL,但他更像是是一种微调,因为这个强化学习并不能无限运行下去)人类先训练一个模型,充当评分器(这个训练好的模型要与人类的偏好保持一致),比如判断小说的好笑程度,对回答排个序,然后模型就可以基于此进行训练。这个方法来源于openai的一篇论文:在无人验证的领域进行强化学习
请添加图片描述

这个方法的好处:让我们能再人愿意领域进行实验,包括那些无法验证的领域;而且允许人们在不必完成极其困难的人物的情况下提供他们的监督,比如写诗。

显著缺点:一开始模型的表现会逐渐变好,但是到最后他的表现可能会一落千丈,因为被模型内部发现了这种训练方式在这个问题下的不足(强化学习很擅长找到欺骗他的方式),也就是说,总会有很荒谬的结果来干预这个过程,毕竟这个模拟器他并不完美。因此我们在模型改善差不多之后应该立刻进行裁剪,不然就会变差。

ok,差不多到这里就结束了!3小时之后的内容就没有再做记录了,因为个人感觉重复有点多,,很多信息现在也都知道了。学的很爽。RL正在觉醒….

相关文章:

前x-ai首席科学家karpathy的从零构建ChatGPT视频学习笔记--8000字长图文笔记预警(手打纯干货,通俗易懂)

2025.2.17晚上21:57看完了整个视频&#xff0c;作为一个ai专业的学生虽然每天都在用ai&#xff0c;但是对于其背后的原理却不是那么清楚&#xff0c;而卡帕西的这支视频却让我醍醐灌顶&#xff0c;而且全程听起来很舒服&#xff0c;没有知识强行进入脑子的痛感&#xff0c;在他…...

【智慧校园】分体空调节能监管:打造高效节能的学习环境

随着科技的飞速发展和生活品质的不断提升&#xff0c;人们对于家居和办公环境的舒适度与智能化要求也越来越高。分体空调集中控制系统作为一种先进的空调管理方式&#xff0c;正逐渐成为现代家庭和办公场所的标配&#xff0c;为用户带来更加便捷、高效和节能的空调使用体验。随…...

深度学习-1.简介

Deep Learning - Lecture 1 Introduction to Deep Learning 学习深度学习的动机什么是深度学习什么导致了深度学习的出现模型与理论的发展&#xff08;软件部分&#xff09;通用图形处理单元GPU的发展&#xff08;硬件部分&#xff09;CPU与GPU计算对比 GPU与CPU的理论FLOPS对…...

【Rust中级教程】1.10. 引用及内部可变性(简单回顾):引用、内部可变性、`Cell`类型及相关操作

喜欢的话别忘了点赞、收藏加关注哦&#xff08;加关注即可阅读全文&#xff09;&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 这篇文章只对所有权进行简单回顾&#xff0c;想要看完整的所有权系统阐述见【Rust自学】专栏…...

Docker 安装和配置 Nginx 详细图文教程

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template &#x1f33a; 仓库主页&#xff1a; GitCode︱ Gitee ︱ Github &#x1f496; 欢迎点赞 &#x1f44d; 收藏 ⭐评论 …...

基于Java+Swing+Mysql实现旅游管理信息系统

基于JavaSwingMysql实现旅游管理信息系统 一、系统介绍二、功能展示1.登陆2.注册3.旅游信息查询4.查看游行团信息5.报名6、报名信息管理 三、数据库四、其它1.其他系统实现五.获取源码 一、系统介绍 用户&#xff1a;登陆、注册、旅游信息查询、查看游行团信息、报名 管理员&a…...

使用 Openpyxl 操作 Excel 文件详解

文章目录 安装安装Python3安装 openpyxl 基础操作1. 引入2. 创建工作簿和工作表3. 写入数据4. 保存工作簿5. 加载已存在的Excel6. 读取单元格的值7. 选择工作表 样式和格式化1. 引入2. 设置字体3. 设置边框4. 填充5. 设置数字格式6. 数据验证7. 公式操作 性能优化1. read_only/…...

统信服务器操作系统V20 1070A 安装docker新版本26.1.4

应用场景&#xff1a; 硬件/整机信息&#xff1a;x86平台、深信服超融合平台 OS版本信息&#xff1a;统信V20 1070a 1.获取docker二进制包 链接: https://pan.baidu.com/s/1SukBlra0mQxvslTfFakzGw?pwd5s5y 提取码: 5s5y tar xvf docker-26.1.4.tgz groupadd docker ch…...

【数据分享】1929-2024年全球站点的逐年降雪深度数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、能见度等指标&#xff0c;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 有关气象指标的监测站点数据&#xff0c;之前我们分享过1929-2024年全球气象站…...

python爬虫系列课程1:初识爬虫

python爬虫系列课程1:初识爬虫 一、爬虫的概念二、通用爬虫和自定义爬虫的区别三、开发语言四、爬虫流程一、爬虫的概念 网络爬虫(又被称为网页蜘蛛、网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动抓取互联网信息的程序。原则上,只要是…...

大模型工具大比拼:SGLang、Ollama、VLLM、LLaMA.cpp 如何选择?

简介&#xff1a;在人工智能飞速发展的今天&#xff0c;大模型已经成为推动技术革新的核心力量。无论是智能客服、内容创作&#xff0c;还是科研辅助、代码生成&#xff0c;大模型的身影无处不在。然而&#xff0c;面对市场上琳琅满目的工具&#xff0c;如何挑选最适合自己的那…...

什么是语料清洗、预训练、指令微调、强化学习、内容安全; 什么是megatron,deepspeed,vllm推理加速框架

什么是语料清洗、预训练、指令微调、强化学习、内容安全 目录 什么是语料清洗、预训练、指令微调、强化学习、内容安全语料清洗预训练指令微调强化学习内容安全什么是megatron,deepspeed,vllm推理加速框架语料清洗 语料清洗是对原始文本数据进行处理的过程,旨在去除数据中的…...

HTTP的“对话”逻辑:请求与响应如何构建数据桥梁?

一、前言 作为现代互联网通信的基石&#xff0c;HTTP协议定义了客户端与服务器之间的“对话规则”。每一次网页加载、API调用或文件传输的背后&#xff0c;都离不开精心构造的HTTP请求与响应。请求中封装了用户的意图——从请求方法、资源路径到提交的数据&#xff1b;响应则承…...

【深度学习】预训练和微调概述

预训练和微调概述 1. 预训练和微调的介绍1.1 预训练&#xff08;Pretraining&#xff09;1.2 微调&#xff08;Fine-Tuning&#xff09; 2. 预训练和微调的区别 预训练和微调是现代深度学习模型训练中的两个关键步骤&#xff0c;它们通常是一个 预训练-微调 (Pretrain-Finetune…...

自动化测试框架搭建-单次接口执行-三部曲

目的 判断接口返回值和提前设置的预期是否一致&#xff0c;从而判断本次测试是否通过 代码步骤设计 第一步&#xff1a;前端调用后端已经写好的POST接口&#xff0c;并传递参数 第二步&#xff1a;后端接收到参数&#xff0c;组装并请求指定接口&#xff0c;保存返回 第三…...

【阮一峰】2.数组

数组 简介 所有成员的类型必须相同&#xff0c;但是成员数量是不确定的。 由于成员数量可以动态变化&#xff0c;所以 TypeScript 不会对数组边界进行检查&#xff0c;越界访问数组并不会报错。 第一种写法&#xff1a; let arr: (number | string)[];第二种写法&#xff…...

DeepSeek 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方DeepSeek接入)

前言 在当今数字化时代&#xff0c;AI编程助手已成为提升开发效率的利器。DeepSeek作为一款强大的AI模型&#xff0c;凭借其出色的性能和开源免费的优势&#xff0c;成为许多开发者的首选。今天&#xff0c;就让我们一起探索如何将DeepSeek接入PyCharm&#xff0c;实现高效、智…...

【Java Card】Applet 使用Shareable进行数据分享以及部分问题处理

文章目录 前言一、定义接口二、server端实现三、client端实现四、遇到的问题 前言 在进行开发时&#xff0c;可能会将业务放到不同的applet中&#xff0c;这时常常会需要进行数据的分享。 比如在一个applet中存储了密钥&#xff0c;而在另一个业务applet中需要进行签名时&…...

国产FPGA开发板选择

FPGA开发板是学习和开发FPGA的重要工具&#xff0c;选择合适的开发板对学习效果和开发效率至关重要。随着国产FPGA的发展&#xff0c;淘宝上的许多FPGA开发板店铺也开始进行国产FPGA的设计和销售&#xff0c;本文将对国产FPGA和相关店铺做个简单梳理&#xff0c;帮助有需要使用…...

com.typesafe.config

com.typesafe.config 是 Typesafe Config 库的核心包&#xff0c;主要用于 统一、灵活地管理应用程序配置&#xff0c;支持从多种格式&#xff08;如 HOCON、JSON、Java Properties&#xff09;加载配置&#xff0c;并提供类型安全的访问接口。以下是其核心功能的详细解析&…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...

面试高频问题

文章目录 &#x1f680; 消息队列核心技术揭秘&#xff1a;从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"&#xff1f;性能背后的秘密1.1 顺序写入与零拷贝&#xff1a;性能的双引擎1.2 分区并行&#xff1a;数据的"八车道高速公路"1.3 页缓存与批量处理…...

Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践

前言&#xff1a;本文将向开发者介绍一款创新性协作工具——Neko虚拟浏览器。在数字化协作场景中&#xff0c;跨地域的团队常需面对实时共享屏幕、协同编辑文档等需求。通过本指南&#xff0c;你将掌握在Ubuntu系统中使用容器化技术部署该工具的具体方案&#xff0c;并结合内网…...