选取后端的经历十分曲折,本来选定的是SpringAI,利用熟悉的JAVA来进行接口API的调用,而且也已经实现了API的调用,并进行了token的购买。
但是在小组讨论的过程中,由于发现
- 并使用 Prompt-Tuning 或 P-Tuning 技术,该技术过在冻结模型的情况下,对预训练模型的部分参数进行微调,训练可学习的连续提示向量(Prompt Embedding)或部分特定层参数,以提升学习计划制定功能的表现效果。
这项技术需要利用Python语言的后端,无法简单的通过java来实现调用,于是决定改用Python的框架和后端,使用Flask后端框架。
学习了一下p-Tuning技术
1. 核心概念
Prompt-Tuning(提示微调)或P-Tuning(一种特定的Prompt-Tuning变体)是一种轻量级的微调方法,旨在解决传统微调方法(如Fine-Tuning)在预训练模型上的资源消耗和计算成本问题。其核心思想是在不改变预训练模型主体参数的前提下,通过引入可学习的连续提示向量(Prompt Embedding)或微调部分特定层参数,来引导模型更好地完成特定任务。
2. 与传统微调方法的对比
- 传统Fine-Tuning:需要更新整个预训练模型的所有参数,计算成本高,需要大量数据和计算资源。
- Prompt-Tuning/P-Tuning:
- 冻结模型主体参数:预训练模型的主体参数保持不变,避免了对大规模参数的更新。
- 引入可学习提示:在输入层或特定层插入可学习的连续向量(Prompt Embedding),这些向量通过反向传播进行更新。
- 轻量级:由于只更新少量参数(如提示向量或部分层参数),计算成本显著降低。
3. 技术细节
- Prompt Embedding:
- 提示向量是连续的、可学习的向量,与输入文本的嵌入向量拼接在一起,作为模型的输入。
- 这些提示向量通过训练数据学习到与任务相关的信息,从而引导模型更好地完成任务。
- P-Tuning的变体:
- P-Tuning通常在提示向量中引入更复杂的结构(如多层感知机MLP),以增强提示向量的表达能力。
- 也可能微调预训练模型的特定层参数(如最后一层或注意力机制的部分参数),以进一步提升性能。
4. 提升学习计划制定功能的表现效果
- 任务适应性:通过引入可学习的提示向量,模型可以更好地适应特定任务(如学习计划制定),而无需对整个模型进行大规模调整。
- 资源效率:由于只更新少量参数,Prompt-Tuning/P-Tuning在计算资源和数据需求上更加高效,适合资源受限的场景。
- 性能提升:在特定任务上,Prompt-Tuning/P-Tuning可以达到与传统Fine-Tuning相当甚至更好的性能,尤其是在小数据集上。
5. 简单类比
- 想象预训练模型是一个“全能厨师”,擅长做各种菜(处理各种任务)。
- 传统Fine-Tuning就像是让这个厨师重新学习所有菜的做法(更新所有参数),成本高且耗时。
- Prompt-Tuning/P-Tuning则像是给厨师提供了一份“定制菜谱”(Prompt Embedding),厨师只需要根据这份菜谱调整部分做法(更新少量参数),就能做出符合特定口味的菜(完成特定任务)。
由于后端算法,需要算力,也向老师提供了算力申请,对于原来的框架推翻重改,是一个艰难的选择,但这也是软件工程的经验与必经之路,也充分体会到了之前学习的软件工程的课程的重要性与提前规划的重要性。