Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Alpaca构建方式探秘:低成本构造指令数据增强LLM

Alpaca构建方式探秘:低成本构造指令数据增强LLM

作者头像
Steve Wang
发布于 2023-10-12 01:43:06
发布于 2023-10-12 01:43:06
79700
代码可运行
举报
文章被收录于专栏:从流域到海域从流域到海域
运行总次数:0
代码可运行

官方介绍:Alpaca: A Strong, Replicable Instruction-Following Model github地址:https://github.com/tatsu-lab/stanford_alpaca

Alpaca简介

Alpaca是斯坦福大学在Meta开源的大模型LLaMA 7B基础上使用自构建的52K指令数据重新训练得到的增强模型,它的数据构造和训练成本极低,总计约600美元(数据构建500美元+机器训练100美元),效果却逼近OpenAI的text-davinci-003(GPT 3.5),这篇博客和大家一起学习下alpaca的构建方法。

Alpaca构建流程

#mermaid-svg-uy4nhM6uTWnIOSvb {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-uy4nhM6uTWnIOSvb .error-icon{fill:#552222;}#mermaid-svg-uy4nhM6uTWnIOSvb .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-uy4nhM6uTWnIOSvb .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-uy4nhM6uTWnIOSvb .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-uy4nhM6uTWnIOSvb .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-uy4nhM6uTWnIOSvb .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-uy4nhM6uTWnIOSvb .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-uy4nhM6uTWnIOSvb .marker{fill:#333333;stroke:#333333;}#mermaid-svg-uy4nhM6uTWnIOSvb .marker.cross{stroke:#333333;}#mermaid-svg-uy4nhM6uTWnIOSvb svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-uy4nhM6uTWnIOSvb .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-uy4nhM6uTWnIOSvb .cluster-label text{fill:#333;}#mermaid-svg-uy4nhM6uTWnIOSvb .cluster-label span{color:#333;}#mermaid-svg-uy4nhM6uTWnIOSvb .label text,#mermaid-svg-uy4nhM6uTWnIOSvb span{fill:#333;color:#333;}#mermaid-svg-uy4nhM6uTWnIOSvb .node rect,#mermaid-svg-uy4nhM6uTWnIOSvb .node circle,#mermaid-svg-uy4nhM6uTWnIOSvb .node ellipse,#mermaid-svg-uy4nhM6uTWnIOSvb .node polygon,#mermaid-svg-uy4nhM6uTWnIOSvb .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-uy4nhM6uTWnIOSvb .node .label{text-align:center;}#mermaid-svg-uy4nhM6uTWnIOSvb .node.clickable{cursor:pointer;}#mermaid-svg-uy4nhM6uTWnIOSvb .arrowheadPath{fill:#333333;}#mermaid-svg-uy4nhM6uTWnIOSvb .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-uy4nhM6uTWnIOSvb .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-uy4nhM6uTWnIOSvb .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-uy4nhM6uTWnIOSvb .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-uy4nhM6uTWnIOSvb .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-uy4nhM6uTWnIOSvb .cluster text{fill:#333;}#mermaid-svg-uy4nhM6uTWnIOSvb .cluster span{color:#333;}#mermaid-svg-uy4nhM6uTWnIOSvb div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-uy4nhM6uTWnIOSvb :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

Text-davinci-003生成指令数据

指令精调

175条自指令任务

52K指令数据

Alpaca 7B

(注:instructed LLaMA 7B原博客无相关表述,是笔者给中间产物起的一个名字)

Text-davinci-003生成指令数据

使用OpenAI的Text-davinci-003模型,基于人工编写的175条自指令种子任务,让模型生成更多的指令任务数据用于后续的指令精调。

指令数据包含如下字段:

  • id:用于标记数据
  • name:任务名称
  • instance:当前任务的指令数据实例,列表类型
    • instruction:当前任务下喂给模型的指令,即任务的详细说明
    • input (optional):当前任务下喂给模型的输入,生成类任务可为空,约40%的原始数据含有input
    • output: 预期模型的输出,源数据是人工编写的,构造的新数据是由text-davinci-003生成的
  • is_classification:标志位,标识是否是分类任务,为了简化任务,作者并没有区分分类任务和其他任务,而是放在一起生成

选取前5条指令数据做为示例如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "id":"seed_task_0",
    "name":"breakfast_suggestion",
    "instruction":"Is there anything I can eat for a breakfast that doesn't include eggs, yet includes protein, and has roughly 700-1000 calories?",
    "instances":[
        {
            "input":"",
            "output":"Yes, you can have 1 oatmeal banana protein shake and 4 strips of bacon. The oatmeal banana protein shake may contain 1/2 cup oatmeal, 60 grams whey protein powder, 1/2 medium banana, 1tbsp flaxseed oil and 1/2 cup watter, totalling about 550 calories. The 4 strips of bacon contains about 200 calories."
        }
    ],
    "is_classification":false
}
{
    "id":"seed_task_1",
    "name":"antonym_relation",
    "instruction":"What is the relation between the given pairs?",
    "instances":[
        {
            "input":"Night : Day :: Right : Left",
            "output":"The relation between the given pairs is that they are opposites."
        }
    ],
    "is_classification":false
}
{
    "id":"seed_task_2",
    "name":"one_sentence_description",
    "instruction":"Generate a one-sentence description for each of the following people.",
    "instances":[
        {
            "input":"- Brack Obama\n- Elon Musk\n- Taylor Swift",
            "output":"- Barack Hussein Obama II is an American politician who served as the 44th president of the United States from 2009 to 2017.\n- Elon Musk is the founder, CEO, and chief engineer of SpaceX; angel investor, CEO and product architect of Tesla, Inc.; founder of The Boring Company; co-founder of Neuralink and OpenAI; president of the Musk Foundation; and owner and CEO of Twitter, Inc.\n- Taylor Alison Swift is an American singer-songwriter."
        }
    ]
    "is_classification":false
},
{
    "id":"seed_task_3",
    "name":"harmful_stereotype_example",
    "instruction":"Describe a situation in which the given stereotype can harm you.",
    "instances":[
        {
            "input":"\"All Asians are smart!\"",
            "output":"Imagine you're a small child of Asian descent. You hear your whole life how \"all Asians are smart,\" but you know that does not feel like it's true for you. You have a hard time in school. Reading is difficult. Math is impossible. Everyone around you seems to pressure you because you are supposed to be \"smart.\" Every time you do not bring home that \"A\" assignment, you feel like a failure. Like you alone missed out on the gene that makes \"all Asians smart.\"\nAs educational opportunities like scholarships and colleges close their door on you, your future looks bleak. You have spent years trying to be the stereotypically smart Asian instead of finding the talents that could have taken you to success in other areas. As you can see, although the stereotype doesn't sound like a bad thing at first, it can put a lot of weight on the people who do not fit into it."
        }
    ]
    "is_classification":false
},
{
    "id":"seed_task_4",
    "name":"email_subject_generation",
    "instruction":"Generate an appropriate subjective title for the following email:",
    "instances":[
        {
            "input":"Hi [person name],\n\nI'm writing to ask you if you are happy to be a panelist of our workshop on multimodality at CVPR. The workshop will be held on June 20, 2023. \n\nBest,\n[my name]",
            "output":"Invitition to be a panelist for CVPR 2023 workshop on Multimodality"
        }
    ],
    "is_classification":false
}

作者在项目工程中列出了种子任务的数据分布,内圈是任务的核心动词,外卷是具体的任务目标,如下图所示:

使用的prompt如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
You are asked to come up with a set of 20 diverse task instructions. These task instructions will be given to a GPT model and we will evaluate the GPT model for completing the instructions.

Here are the requirements:
1. Try not to repeat the verb for each instruction to maximize diversity.
2. The language used for the instruction also should be diverse. For example, you should combine questions with imperative instrucitons.
3. The type of instructions should be diverse. The list should include diverse types of tasks like open-ended generation, classification, editing, etc.
4. A GPT language model should be able to complete the instruction. For example, do not ask the assistant to create any visual or audio output. For another example, do not ask the assistant to wake you up at 5pm or set a reminder because it cannot perform any action.
5. The instructions should be in English.
6. The instructions should be 1 to 2 sentences long. Either an imperative sentence or a question is permitted.
7. You should generate an appropriate input to the instruction. The input field should contain a specific example provided for the instruction. It should involve realistic data and should not contain simple placeholders. The input should provide substantial content to make the instruction challenging but should ideally not exceed 100 words.
8. Not all instructions require input. For example, when a instruction asks about some general information, "what is the highest peak in the world", it is not necssary to provide a specific context. In this case, we simply put "<noinput>" in the input field.
9. The output should be an appropriate response to the instruction and the input. Make sure the output is less than 100 words.

List of 20 tasks:

prompt包含3个部分:

  1. 指定任务:要求模型输出20种不同任务的指令,并写明了这些生成任务指令将会输入给GPT模型来评估模型效果
  2. 任务要求:共计9个要求:
    1. 动词不能重复,以提高多样性
    2. 使用的语言尽可能不同,应该将问题以祈使句指令的形式进行组合
    3. 任务类型必须不同,如开放性问题,分类,编辑等等
    4. 指令必须能被GPT执行,不能要求模型输出任何图像或者音频,也不能要求模型执行类型于明天5点叫我起床这种做动作任务
    5. 指令必须是英文的
    6. 指令必须仅有一两句话那么长,仅允许祈使句或者疑问句
    7. 应该为指令生成合适的input,input需要包含一个具体的任务示例,并且包含真实的数据而不包含简单的占位符。input需要尽可能提供大量的信息但又不能太长
    8. 不是所有任务都需要input,例如“世界最高峰是什么”这样的生成式任务。在input不是必要的情况下,仅仅在input字段填充""
    9. output必须要是一个恰当的回复,需要保证不超过100个单词
  3. 示例的20个任务

作者在每一个提示词后面,拼接了20个任务做为示例,使用OpenAI的API调用text-davinci-003生成任务指令,最终结果是基于175条种子数据,生成了52000不同的指令数据(笔者任务该过程中应该有机器筛选甚至人工筛选),花费了500美元。

LLaMA 7B指令精调

在构建好52K的指令数据集之后,使用Hugging Face的训练代码进行训练(详见博文开头的github地址),即可得到Alpaca。原作者在4张A800上以FDSP的full_shard模式训练,花费了100美元。

训练指定超参数如下:

Hyperparameter

LLaMA-7B

LLaMA-13B

Batch size

128

128

Learning rate

2e-5

1e-5

Epochs

3

5

Max length

512

512

Weight decay

0

0

原作者使用的python版本是3.10,示例训练命令如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
torchrun --nproc_per_node=4 --master_port=<your_random_port> train.py \
    --model_name_or_path <your_path_to_hf_converted_llama_ckpt_and_tokenizer> \
    --data_path ./alpaca_data.json \
    --bf16 True \
    --output_dir <your_output_dir> \
    --num_train_epochs 3 \
    --per_device_train_batch_size 4 \
    --per_device_eval_batch_size 4 \
    --gradient_accumulation_steps 8 \
    --evaluation_strategy "no" \
    --save_strategy "steps" \
    --save_steps 2000 \
    --save_total_limit 1 \
    --learning_rate 2e-5 \
    --weight_decay 0. \
    --warmup_ratio 0.03 \
    --lr_scheduler_type "cosine" \
    --logging_steps 1 \
    --fsdp "full_shard auto_wrap" \
    --fsdp_transformer_layer_cls_to_wrap 'LlamaDecoderLayer' \
    --tf32 True

也可以将LLaMA替换为OPT-6.7B来进行训练:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
torchrun --nproc_per_node=4 --master_port=<your_random_port> train.py \
    --model_name_or_path "facebook/opt-6.7b" \
    --data_path ./alpaca_data.json \
    --bf16 True \
    --output_dir <your_output_dir> \
    --num_train_epochs 3 \
    --per_device_train_batch_size 4 \
    --per_device_eval_batch_size 4 \
    --gradient_accumulation_steps 8 \
    --evaluation_strategy "no" \
    --save_strategy "steps" \
    --save_steps 2000 \
    --save_total_limit 1 \
    --learning_rate 2e-5 \
    --weight_decay 0. \
    --warmup_ratio 0.03 \
    --lr_scheduler_type "cosine" \
    --logging_steps 1 \
    --fsdp "full_shard auto_wrap" \
    --fsdp_transformer_layer_cls_to_wrap 'OPTDecoderLayer' \
    --tf32 True
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-09-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
CausalDiscoveryToolbox:因果建模、因果图代码实现
最近在分析观测数据的因果关系时,发现一个很好用的工具包——CausalDiscoveryToolbox(以下简称Cdt),功能齐全,轻松上手因果发现。 下面简单整理下该工具包的原理+用法。
全栈程序员站长
2022/09/21
1.6K0
CausalDiscoveryToolbox:因果建模、因果图代码实现
Postgresql源码(60)事务系统框架总结
用户命令触发状态机函数导致事务状态流转,流转时按对应状态调用底层事务处理函数干活。
mingjie
2022/07/14
6690
LLM入门2 | 羊驼AIpaca | Stanford
斯坦福的研究,从LLaMA 7B模型在52k的instruction-following demonstrations上微调得到的模型,AIpaca 7B. 主打就是一个低成本,小于600刀。据说和text-davinci-003具有相类似的性能,也就是我们所说的GPT-3.5。
机器学习炼丹术
2023/09/02
6260
LLM入门2 | 羊驼AIpaca | Stanford
Spring全家桶 源码 入门系列(二) --------AOP深度剖析
com.libin.a13.ProxyFastClass,com.libin.a13.TargetFastClass
猫头虎
2024/04/08
1180
【C进阶】顺序表详解
线性表是一种常见的抽象数据类型:线性表是最基本、最简单、也是最常用的一种数据结构。线性表(linear list)是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列。 线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(注意,这句话只适用大部分线性表,而不是全部。比如,循环链表逻辑层次上也是一种线性表(存储层次上属于链式存储,但是把最后一个数据元素的尾指针指向了首位结点)。
学习起来吧
2024/02/29
1460
【C进阶】顺序表详解
斯坦福70亿参数开源模型媲美GPT-3.5,100美元即可复现
机器之心报道 机器之心编辑部 学界或许没有业界的算力优势,但可以使用 self-instruct 方法直面大规模语言模型的挑战。 随着大规模语言模型的日渐强大,人们对 AI 模型提出了伦理道德方面的更高要求。业界在模型规模扩展方面具有算力资源优势,但要想让模型更规范、可靠,需要学术界的努力。 近日,斯坦福基于 Meta 的 LLaMA 7B 模型微调出一个新模型 Alpaca。该研究让 OpenAI 的 text-davinci-003 模型以 self-instruct 方式生成 52K 指令遵循(ins
机器之心
2023/03/29
4970
斯坦福70亿参数开源模型媲美GPT-3.5,100美元即可复现
Spring全家桶 源码 入门系列(一) --------容器与 bean
可以看到,我们课上讲的,都是 BeanFactory 提供的基本功能,ApplicationContext 中的扩展功能都没有用到。
猫头虎
2024/04/08
1440
Mybatis分页插件使用的详解[通俗易懂]
关于分页,一般来说rowBounds 这种假分页都上不了台面,我们往往都选哟真分页,那么还不想搞得很麻烦,Mybatis的分页插件就为后端程序员解决了这个问题
全栈程序员站长
2022/11/07
6820
使用flask框架实现简单的图书管理(python 3.8)
flask是轻量级的web框架。 浏览器作为client发出HTTP请求,而web服务器负责处理逻辑,而flask帮助我们完成了安全性和数据流的控制,让我们只用关注于业务逻辑本身,避免重复造轮子
用户7886150
2020/12/30
7470
梳理一下各大平台使用的sample rate convert算法
转采样属于数字信号重建的范畴,整数倍的升降采样可以通过插值抽取+带限滤波的方法【1】,并且通过级联来实现任意比值的采样率转换。这里需要对奈奎斯特采样定理,以及数字信号时频关系有比较清晰的理解。还有一种方法是插值,插值的方法比较多,在参考里有一阶保持FOH、零阶保持ZOH、三次样条函数spline和sinc函数,引用的博文中有比较直观的分析和事例。那么在各大平台,最后都是用什么实现的resample重建呢?
全栈程序员站长
2022/11/03
1.2K0
梳理一下各大平台使用的sample rate convert算法
ES中文检索须知:分词器与中文分词器
分词即为将doc通过Analyzer切分成一个一个Term(关键字),es分词在索引构建和数据检索时均有体现:
Steve Wang
2024/04/22
9280
ES中文检索须知:分词器与中文分词器
TensorFlow 深度学习框架详解
TensorFlow 是由 Google Brain 团队开发的开源机器学习框架,其名称源于处理多维数据数组(张量)的数据流图(Flow)的运行方式。
奶油话梅糖
2025/03/26
4350
【ChatGPT】一个凭借两百多年历史的公式崛起的巨星
托马斯·贝叶斯 (Thomas Baves,1701年一1761年),是18世纪的一位英国数学家、统计学家
THUNDER王
2023/10/13
3690
【ChatGPT】一个凭借两百多年历史的公式崛起的巨星
Flowith:打造智能工作流的技术利器,别再求Manus邀请码了!
在AI智能体技术快速发展的2024年,工作流引擎正在经历从静态脚本到动态认知的范式转变。Flowith作为新一代智能体协作平台,通过其创新的分布式架构和模块化设计,在复杂任务处理领域展现出独特的技术优势。本文将从系统架构、核心特性到实践案例,深入解析这一前沿工具的技术实现。
鲲志说
2025/04/07
3380
Flowith:打造智能工作流的技术利器,别再求Manus邀请码了!
赶走烦人的“if-else”,使用状态模式推动业务生命周期的流转
本文借助海外互金业务的借款流程展开。业务核心是借款的生命周期,相当于是电商中的订单一样。一笔借款的整个生命周期包含了提交,审批,确认,放款,还款。一笔借款的状态对应已上的操作,同样就很多了。如图是一笔借款的生命周期:
闻说社
2023/03/20
3830
【初探数据结构】带环链表:原理、判断与数学证明
由节点构成的链式结构中存在至少一个节点,其指针域指向链表中已存在的节点,形成闭合环路。特征:
我想吃余
2025/03/31
950
【初探数据结构】带环链表:原理、判断与数学证明
web端实现AR人脸特效
直播、短视频、在线会议等应用越来越多地进入人们的生活,随之诞生的是丰富的各类创意玩法与新鲜体验,其中大量应用了以AI检测和图形渲染为基础的AR技术。
程序猿川子
2022/12/15
1.5K0
web端实现AR人脸特效
如何使用potplayer在公网环境访问内网群晖NAS中储存在webdav中的影视资源
#mermaid-svg-D7WJh3JaNVrLcj2b {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-D7WJh3JaNVrLcj2b .error-icon{fill:#552222;}#mermaid-svg-D7WJh3JaNVrLcj2b .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-D7WJh3JaNVrLcj2b .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-D7WJh3JaNVrLcj2b .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-D7WJh3JaNVrLcj2b .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-D7WJh3JaNVrLcj2b .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-D7WJh3JaNVrLcj2b .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-D7WJh3JaNVrLcj2b .marker{fill:#333333;stroke:#333333;}#mermaid-svg-D7WJh3JaNVrLcj2b .marker.cross{stroke:#333333;}#mermaid-svg-D7WJh3JaNVrLcj2b svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-D7WJh3JaNVrLcj2b .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-D7WJh3JaNVrLcj2b .cluster-label text{fill:#333;}#mermaid-svg-D7WJh3JaNVrLcj2b .cluster-label span{color:#333;}#mermaid-svg-D7WJh3JaNVrLcj2b .label text,#mermaid-svg-D7WJh3JaNVrLcj2b span{fill:#333;color:#333;}#mermaid-svg-D7WJh3JaNVrLcj2b .node rect,#mermaid-svg-D7WJh3JaNVrLcj2b .node circle,#mermaid-svg-D7WJh3JaNVrLcj2b .node ellipse,#mermaid-svg-D7WJh3JaNVrLcj2b .node polygon,#mermaid-svg-D7WJh3JaNVrLcj2b .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-D7WJh3JaNVrLcj2b .node .label{text-align:center;}#mermaid-svg-D7WJh3JaNVrLcj2b .node.clickable{cursor:pointer;}#mermaid-svg-D7WJh3JaNVrLcj2b .arrowheadPath{fill:#333333;}#mermaid-svg-D7WJh3JaNVrLcj2b .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-D7WJh3JaNVrLcj2b .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-D7WJh3JaNVrLcj2b .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-D7WJh3JaNVrLcj2b .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-D7WJh3JaNVrLcj2b .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-D7WJh3JaNVrLcj2b .clust
ImAileen
2024/04/02
2690
如何使用potplayer在公网环境访问内网群晖NAS中储存在webdav中的影视资源
77.HarmonyOS NEXT ImageViewerView 组件深度剖析: Swiper容器与懒加载深度解析
全栈若城
2025/03/16
610
ChatUI vs Ant Design X 技术选型对比
本文从核心功能、架构设计、易用性等维度对比分析阿里巴巴的 ChatUI 和 Ant Design 的 Ant Design X,帮助开发者选择适合的对话式 UI 开发方案。
井九
2025/04/19
2650
ChatUI vs Ant Design X 技术选型对比
推荐阅读
相关推荐
CausalDiscoveryToolbox:因果建模、因果图代码实现
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验