PromptScope: 一个灵活高效的In-Context Training框架

简介: PromptScope 是一个同时支持中英文的 In-Context Training 框架,专为大型语言模型(LLM)性能调优设计。

01.项目简介

PromptScope 是一个同时支持中英文的 In-Context Training 框架,专为大型语言模型(LLM)性能调优设计。In-Context Training 通过调整模型输入(Instruction/样例),优化模型在特定任务中的表现。相比于 In-Weight Training(如 SFT、DPO、RLHF),PromptScope 具有低成本和更高的灵活性。

- 适用场景包括

  • 缺乏可用于训练的 GPU 资源
  • 需要对闭源模型进行性能优化

- PromptScope 的主要特点

  • 全面的优化方法:支持基于样例的优化和基于指令的优化
  • 卓越的优化效果:基于TipsOptimizer的方法在中英文开源数据集上效果优于主流优化算法
  • 高度的灵活性:支持中英文并且提供主流优化算法实现

- 关于TipsOptimizer

  • TipsOptimizer是通过从训练集中根据正负样例,总结出一些Tips,添加到原始system prompt中,来帮助模型提升在指定任务上的表现,只需要提供“训练数据”和“评分函数”,就可以进行优化。以下是一个例子,对比展示优化前后的system prompt:

优化前

请判断下面的新闻属于以下哪个类别:财经、彩票、房产、股票、家居、教育、科技、社会、时尚、时政、体育、星座、游戏、娱乐

优化后

请判断下面的新闻属于以下哪个类别:财经、彩票、房产、股票、家居、教育、科技、社会、时尚、时政、体育、星座、游戏、娱乐- 当新闻内容主要涉及特定领域的科技进步或科学研究时,建议将其分类为“科技”,不建议简单地因为提及国家机构或政策就归类为“时政”。- 在判断新闻类别时,应重点关注文章的主要信息和核心主题,而不是被次要信息所干扰。- 对于跨领域的内容,需要仔细区分主次,确保将新闻准确归入最能反映其主要内容的类别。- 当新闻内容涉及金融产品(如基金)的整体市场表现及行业内部结构变化时,建议归类为“财经”,不建议仅因提及股市就将其分类为“股票”。...(红色部分为新增Tips)

欢迎关注PromptScope,在Github上(https://github.com/modelscope/promptscope) 为我们star 🌟。

02.项目结构

03.效果对比

● 优化器:qwen-max

● 推理模型:qwen-plus

英文

中文

GSM8K

BBH(word_sorting)

BBH(object_counting)

THUNews

CMMLU(nutrition)

CMMLU(college_medical_statistics)

Raw

96.1%

57.0%

97.0%

85.0%

93.2%

73.6%

OPRO

96.3%

56.0%

97.0%

84.0%

90.4%

75.5%

PromptAgent

95.7%

60.0%

97.0%

80.8%

95.9%

71.7%

TipsOptimizer

96.1%

64.0%

98.0%

90.0%

95.9%

83.0%

04.运行方式

git clone https://github.com/modelscope/PromptScope
  • 步骤三:配置DashScope API-KEY
export DASHSCOPE_API_KEY="sk-xxxxx"
  • 步骤四:加载训练和测试数据
with open("../../data/college_medical_statistics/sample_train_data.jsonl", "r") as f:
    train_set = []
    for line in f:
        train_set.append(json.loads(line))
with open("../../data/college_medical_statistics/sample_test_data.jsonl", "r") as f:
    test_set = []
    for line in f:
        test_set.append(json.loads(line))
with open("../../data/college_medical_statistics/init_system_prompt.txt", "r") as f:
    init_system_prompt = f.read().strip()
  • 以下是训练/测试数据格式的组织形式:
[
  {
    "input": "输入(必填)",
    "output": "回复(必填)"
  }
]
  • 步骤五:构建评分函数
def is_good_case(prediction, ground_truth):
    # extract final answer
    prediction = prediction.split("<answer>")[-1].split("</answer>")[0].strip()
    ground_truth = ground_truth
    if ground_truth in prediction:
        return True, 1 # good case, 得分为1
    else:
        return False, 0 # bad case, 得分为1
  • 步骤六:开始运行
from prompt_scope.core.llms.dashscope_llm import DashscopeLLM
from prompt_scope.core.offline.tips_generation.static_tips_generation import StaticTipsGeneration
# 加载推理模型
infer_llm = DashscopeLLM(model="qwen-plus", temperature=0.0)
# 加载优化模型
optim_llm = DashscopeLLM(model="qwen-max", temperature=0.0)
# 运行代码
stg = StaticTipsGeneration(
    init_system_prompt=init_system_prompt,
    infer_llm=infer_llm,
    train_set=train_set,
    test_set=test_set,
    is_good_case_func=is_good_case,
    details_save_dir=f"{current_file_dir}/details_result",
    language="cn"
)
tips = stg.run()

05.后续计划

  • 更多模型支持(基于api/本地部署)
  • 支持多模态In-Context Training方式
  • 更多Optimizer方式,也欢迎大家共建

欢迎关注PromptScope,在Github上(https://github.com/modelscope/promptscope) 为我们star 🌟。

点击链接阅读原文,即可跳转模型代码

https://github.com/modelscope/promptscope

目录
相关文章
|
数据可视化 数据挖掘
基于Bert的文本聚类工具:BERTopic
基于Bert的文本聚类工具:BERTopic
2502 0
基于Bert的文本聚类工具:BERTopic
|
资源调度 分布式计算 监控
|
存储 缓存 算法
Python中collections模块的deque双端队列:深入解析与应用
在Python的`collections`模块中,`deque`(双端队列)是一个线程安全、快速添加和删除元素的双端队列数据类型。它支持从队列的两端添加和弹出元素,提供了比列表更高的效率,特别是在处理大型数据集时。本文将详细解析`deque`的原理、使用方法以及它在各种场景中的应用。
1244 4
|
11月前
|
PyTorch API 算法框架/工具
DeepSeek 部署方式与技术实践
DeepSeek的部署灵活性使其在多个领域大放异彩,但需根据场景权衡性能、成本与安全性。随着工具生态的完善与行业方案的沉淀,2025年将成为AI大模型落地关键年。开发者应持续关注MoE、COT等技术创新,结合自身需求选择最优部署策略。
653 1
|
机器学习/深度学习 人工智能 并行计算
N卡和A卡的硬件架构比较与选择指南
N卡和A卡的硬件架构比较与选择指南
1118 0
|
算法 API 数据格式
PromptScope: 一个灵活高效的In-Context Training框架
PromptScope: 一个灵活高效的In-Context Training框架
275 3
|
人工智能 开发者
钉钉AI助理接入DeepSeek,深度思考,能力更强
钉钉AI助理全面接入DeepSeek系列模型,包括R1、V3和R1-qwen32b蒸馏版。用户可在钉钉上创建AI助理时选择这些模型,并使用全新模板一键创建、发布和使用基于DeepSeek模型的AI助理。PC端和移动端均提供了简便的操作步骤来创建和发布AI助理,无需复杂配置即可实现深度思考和联网查询功能。此次更新旨在提升工作效率,提供更丰富的选择和更智能的体验。
1268 14
|
存储 SQL 关系型数据库
【MySQL基础篇】MySQL约束语法
文章介绍了MySQL中表的约束概念,包括非空、唯一、主键、默认和外键约束,以及如何在创建和修改表时指定这些约束。外键约束用于保持数据的一致性和完整性,文章通过示例展示了添加、删除外键的语法,并讨论了不同的删除/更新行为,如CASCADE和SETNULL。
【MySQL基础篇】MySQL约束语法
|
前端开发 API 数据库
Next 编写接口api
Next 编写接口api
809 3

热门文章

最新文章