Skip to content

Commit

Permalink
Merge pull request #10 from watonyweng/update-reference-link
Browse files Browse the repository at this point in the history
docs: update reference link
  • Loading branch information
phodal authored Jan 23, 2024
2 parents 2692286 + a37cc7f commit e6db1eb
Showing 1 changed file with 24 additions and 25 deletions.
49 changes: 24 additions & 25 deletions src/finetune-llm-ops.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
# 微调的三阶六步:LLMOps
# 微调的三阶六步:LLMOps

![LLMOps](images/llmops.png)

在开源大语言模型(LLM)的加持之下,我们可以做到:

1. **集采众长以帮助场景创新**。将相关领域中已开放的专业知识和经验融合到语言模型中,从而辅助探索合适的API服务场景 -
1. **集采众长以帮助场景创新**。将相关领域中已开放的专业知识和经验融合到语言模型中,从而辅助探索合适的 API 服务场景 -
Discover;
2. **资产建模驱动**。将研发组织已有的经典的软件工程的资产,文本化、结构化转变为 LLM
的语料,充分利用既有经验以定义能够满足服务场景的API - Define;
的语料,充分利用既有经验以定义能够满足服务场景的 API - Define;
3. **标准内建的设计与交付**。将自然语言描述的场景及需求转化为具体的 Restful API
设计,并结合数据工程与平台工程,持续整合整个组织的软件智慧和经验,以帮助我们构建好的软件架构 - Deliver。

Expand All @@ -20,25 +20,25 @@ LoRA。并根据我们的理解,绘制了一个可复用的过程路径:

在不同的阶段,我们有不同的关注点:

* **Discover 阶段**,关注于**数据与语言工程**。即:训练语料的来源与数据处理,或是来源于对 OpenAI 的数据蒸馏,或是来源于公开的
- **Discover 阶段**,关注于**数据与语言工程**。即:训练语料的来源与数据处理,或是来源于对 OpenAI 的数据蒸馏,或是来源于公开的
API,又或是从代码中提炼 API。
* **Define 阶段**,关注于 **Prompt 工程**。即:设计适用于私有化大模型的 instruction、input 和 output,以及设计**演进式评估**
- **Define 阶段**,关注于 **Prompt 工程**。即:设计适用于私有化大模型的 instruction、input 和 output,以及设计**演进式评估**
所需要的评估数据集。
* **Delivery 阶段**,关注于**平台工程**。即:将 LLM 的应用工程化,“无缝” 接入内部的各种平台和工具,持续处理用户对于数据的反馈,以持续迭代软件数据集。
- **Delivery 阶段**,关注于**平台工程**。即:将 LLM 的应用工程化,“无缝” 接入内部的各种平台和工具,持续处理用户对于数据的反馈,以持续迭代软件数据集。

在此时,LLM 的工程化便是一个跨越不同领域的复杂数据工程活动。将这样的工程标准化、跨不同部门协作、持续迭代下去,则会是我们未来的新挑战。

以 API 为例,我们将上述的三个阶段分解为六步:

* **Discover 阶段**
* 识别软件工程资产
* 针对于资产的“语言建模”(格式化输出)
* **Define 阶段**
* MVP 微调试验
* 设计增量引导指标
* **Delivery 阶段**
* LLM 体验设计与工具集成
* 基于反馈的平台工程
- **Discover 阶段**
- 识别软件工程资产
- 针对于资产的“语言建模”(格式化输出)
- **Define 阶段**
- MVP 微调试验
- 设计增量引导指标
- **Delivery 阶段**
- LLM 体验设计与工具集成
- 基于反馈的平台工程

针对于不同的场景下,可能略有差异。

Expand Down Expand Up @@ -72,8 +72,8 @@ markdown 表格、UML 等。
在同一个场景之下,我们预期 LLM 能返回固定格式的数据,方便我们结合到工具中。尽管没有可信的来源证明: OpenAI 在语料阶段使用
markdown 作为数据,但是从经常性输出 markdown 的结构和 ChatGPT 的渲染来看,markdown 是其中一种 LLM 友好的格式。如:

* 文本生成模型场景下,PlantUML 是最友好的格式之一
* 生成 API 场景下,markdown 是最友好的格式之一
- 文本生成模型场景下,PlantUML 是最友好的格式之一
- 生成 API 场景下,markdown 是最友好的格式之一

随后,我们定义了 API 的 “语言模型”:

Expand All @@ -90,9 +90,9 @@ AI API 来辅导我们进行数据准备。

在进行 MVP 阶段数据处理时,可以考虑多种方式结合:

* 常规双向匹配。
* 数据蒸馏。即将大型真实数据集(训练集)作为输入,并输出一个小的合成蒸馏数据集。
* 反向生成。即基于目标 output 文本生成潜在的 input,以作为数量级。
- 常规双向匹配。
- 数据蒸馏。即将大型真实数据集(训练集)作为输入,并输出一个小的合成蒸馏数据集。
- 反向生成。即基于目标 output 文本生成潜在的 input,以作为数量级。

如下是我们根据 Swagger、Postman 创建数据集的过程:

Expand Down Expand Up @@ -143,11 +143,10 @@ Intellij IDEA 自带的 InlayModel,可以支持:Inline,AfterLine,Block
## **总结**

利用大语言模型技术,能帮助我们汲取来自不同领域的优秀 API 设计经验和方法,同时融合研发组织自身的经验和实践,以及主流的 API
规范。这有助于提高架构中的 API 设计效率和质量,从而增强整体架构的服务能力和开放性。而具体的提升效果如何,以及引入LLM增强的架构治理方式及路径是否会有所变化,还需要更多的实际应用场景来进一步验证。
规范。这有助于提高架构中的 API 设计效率和质量,从而增强整体架构的服务能力和开放性。而具体的提升效果如何,以及引入 LLM 增强的架构治理方式及路径是否会有所变化,还需要更多的实际应用场景来进一步验证。

参考资料:

***CodeGen: An Open Large Language Model for Code with Multi-Turn Program Synthesis**
***Evaluating Large Language Models Trained on Code**
***[A Survey of Large Language Models](https://arxiv.org/abs/2303.18223)**

-**[CodeGen: An Open Large Language Model for Code with Multi-Turn Program Synthesis](https://arxiv.org/abs/2203.13474)**
-**[Evaluating Large Language Models Trained on Code](https://arxiv.org/abs/2107.03374)**
-**[A Survey of Large Language Models](https://arxiv.org/abs/2303.18223)**

0 comments on commit e6db1eb

Please sign in to comment.