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

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

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运行方式



  • 步骤二:下载PromptScope仓库


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


  • 步骤六:开始运行

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


05后续计划


  • 更多模型支持(基于api/本地部署)
  • 支持多模态In-Context Training方式
  • 更多Optimizer方式,也欢迎大家共建
相关文章
|
编译器 C++ Windows
win10 环境下配置 openGL的freeglut、glew等库,使用openGL
win10 环境下配置 openGL的freeglut、glew等库,使用openGL
8068 0
|
索引 Python
Python基础 | pandas.dataframe 专题使用指南
pandas.dataframe 专题使用指南。
6004 0
|
1月前
|
人工智能 弹性计算 自然语言处理
阿里云怎样部署OpenClaw?2026年保姆级攻略来了!
OpenClaw怎样部署?阿里云推出了OpenClaw快速部署方案,零基础也能轻松上手,仅需三步即可拥有专属AI助理!
573 8
|
11月前
|
PyTorch API 算法框架/工具
DeepSeek 部署方式与技术实践
DeepSeek的部署灵活性使其在多个领域大放异彩,但需根据场景权衡性能、成本与安全性。随着工具生态的完善与行业方案的沉淀,2025年将成为AI大模型落地关键年。开发者应持续关注MoE、COT等技术创新,结合自身需求选择最优部署策略。
655 1
|
6月前
|
机器学习/深度学习 存储 缓存
大模型推理加速技术:PagedAttention原理与实现
本文深入解析大语言模型推理中的革命性技术——PagedAttention,该技术是vLLM推理引擎的核心创新。通过将操作系统中的虚拟内存分页概念引入注意力机制,PagedAttention有效解决了KV缓存的内存碎片问题,实现了近乎零浪费的KV缓存管理。文章详细阐述其原理、内存管理机制、实现细节,并提供完整的代码示例和性能分析。
780 1
|
9月前
|
人工智能 安全 API
MCP vs 传统集成方案:REST API、GraphQL、gRPC的终极对比
作为一名长期关注AI技术发展的博主摘星,我深刻感受到了当前AI应用集成领域正在经历的巨大变革。随着Anthropic推出的Model Context Protocol(MCP,模型上下文协议)逐渐成熟,我们不得不重新审视传统的系统集成方案。在过去的几年中,REST API凭借其简单易用的特性成为了Web服务的标准选择,GraphQL以其灵活的数据查询能力赢得了前端开发者的青睐,而gRPC则以其高性能的特点在微服务架构中占据了重要地位。然而,当我们将视角转向AI应用场景时,这些传统方案都暴露出了一些局限性:REST API的静态接口设计难以适应AI模型的动态需求,GraphQL的复杂查询机制在处
515 0
MCP vs 传统集成方案:REST API、GraphQL、gRPC的终极对比
|
10月前
|
存储 运维 安全
OSS安全合规实战:金融行业敏感数据加密+KMS自动轮转策略(满足等保2.0三级要求)
金融行业OSS面临等保2.0、行业监管及数据泄露三重合规挑战,存在存储加密不足、密钥轮转滞后、访问控制不当等问题。本文提出分层加密架构,结合服务端KMS与客户端加密,设计自动密钥轮转机制,实现高性能与合规兼顾,并提供故障排查与成本优化方案,助力金融机构安全落地OSS应用。
506 1
|
数据采集 数据处理 索引
DataFrame
【10月更文挑战第13天】
1257 2
|
11月前
GET与POST之间的差异:为何GET请求的参数在浏览器历史记录中被完整保留,而POST的不被保留?
基于以上,我们可以得出结论:GET请求的参数在浏览器历史记录中之所以能被完整保存,系其请求设计之本质。另一方面,POST请求的参数不被保存,也同样源于其设计目标和工作原理的考虑。
305 12
|
12月前
|
人工智能 API
MCP协议的局限性
5年前,我把 AI 比喻为一种智能化的 API 网关,提出一种分治的思想,将一个大问题转换为若干可解的小问题,如今,这种思想正在 mcp 这种协议沿用。但目前来看,它的实现方式还是有点丑陋的,并且有一些问题。