LLM合成数据notes

MoDS

使用reward-model-deberta-v3-large-v2奖励模型对QA对打分筛选高质量QA,再使用bert计算句子相似度使用kCenterGreedy选取多样性指令,再进行微调,微调后对LLM结果进行筛选低分,再补充表现不佳的数据进行SFT。
ps:看任务,我自己用reward-model-deberta-v3-large-v2测的分数感觉不行,做不了筛选。

magpie
由于LLM自回归训练所以能够自动生成用户输入,添加左侧模版,输入LLM自动生成指令,再将生成的指令输入LLM(本地/调用api)获得输出。使用guard_model_path=“meta-llama/Meta-Llama-Guard-2-8B”,reward_model_path=“sfairXC/FsfairX-LLaMA3-RM-v0.1"等调用api对生成数据进行安全性、奖励、质量、难度等打分,再筛选符合要求的数据。使用SentenceTransformer(all-mpnet-base-v2)构建Faiss索引,然后对每个文本搜索最近的k个邻居,计算余弦距离来判断相似度进行去重。
使用model = ArmoRMPipeline(“RLHFlow/ArmoRM-Llama3-8B-v0.1”, trust_remote_code=True, device_map=f"cuda:{args.device}”)对指令的回复进行打分。

<|begin_of_text|><|start_header_id|>user<|end_header_id|>

多轮对话

"mt_append_template": "<|start_header_id|>user<|end_header_id|>\n\n",
mt_system_prompt = "You are a helpful Al assistant. The user will engage in a multi-round conversation with you, asking initial questions and following up with additional related questions. Your goal is to provide thorough,relevant and insightful responses to help the user with their queries."
print(f"Generating responses for turn {turn}...")
prompts = []
for item in batch:
    if not args.tokenizer_template:
        conv = get_conversation_template(MODEL_NAME)
        if turn == 2:
            conv.append_message(conv.roles[0], item[f'instruction'])
            conv.append_message(conv.roles[1], item[f'response'])
        else:
            conv.append_message(conv.roles[0], item[f'instruction'])
            conv.append_message(conv.roles[1], item[f'response'])
            for i in range(2, turn):
                conv.append_message(conv.roles[0], item[f'instruction_{i}'])
                conv.append_message(conv.roles[1], item[f'response_{i}'])
        conv.append_message(conv.roles[0], item[f'instruction_{turn}'])
        conv.append_message(conv.roles[1], None)
        template = conv.get_prompt()
    else:
        chat = []
        if turn == 2:
            chat.append({"role": "user", "content": item[f'instruction']})
            chat.append({"role": "assistant", "content": item[f'response']})
        else:
            chat.append({"role": "user", "content": item[f'instruction']})
            chat.append({"role": "assistant", "content": item[f'response']})
            for i in range(2, turn):
                chat.append({"role": "user", "content": item[f'instruction_{i}']})
                chat.append({"role": "assistant", "content": item[f'response_{i}']})
        chat.append({"role": "user", "content": item[f'instruction_{turn}']})
        template = tokenizer.apply_chat_template(chat, tokenize=False, add_generation_prompt=True)
    prompts.append(template)
outputs = llm.generate(prompts, response_params)
for i, item in enumerate(batch):
    item[f'response_{turn}'] = outputs[i].outputs[0].text.strip()

self-instruct
从175条种子任务(每条带有一个instruct和一条示例)使用LLM进行指令生成,根据是否是分类任务进行区分,对生成的instruct生成回复,再进行过滤筛选。

### 关于大型语言模型Prompt的相关数据集或示例 在研究和开发过程中,为了更好地理解和优化大型语言模型(LLM),研究人员通常会利用各种公开的数据集来测试和改进Prompt的设计。以下是几个常见且具有代表性的数据集以及一些具体的Prompt示例。 #### 数据集介绍 1. **AdvertiseGen**: 这是一个专门用于广告文案生成的任务型数据集[^1]。它包含了大量针对不同产品的描述性文本及其对应的广告语句,适合用来训练和评估LLM在创意写作方面的表现。 2. **WebText**: OpenAI发布的WebText系列数据集是从互联网抓取的大规模自然语言文本集合。虽然其主要目的是预训练通用的语言理解能力,但它也可以作为设计特定领域Prompts的基础素材之一。 3. **P3 (People's Prompt Project)**: P3是由阿里巴巴达摩院推出的一个大规模中文Prompt数据集,涵盖了广泛的场景应用案例,比如问答、翻译、摘要生成等任务类型。 #### 示例代码展示 下面提供了一个简单的Python脚本片段,演示如何通过`promptwright`库加载并调用某个指定名称的模型完成一次交互: ```python import os from promptwright import Prompts def main(): model_name = "llama2" # 安装必要依赖项 os.system(f"pip install promptwright") os.system(f"ollama serve &> /dev/null") # 启动服务端进程 os.system(f"ollama pull {model_name}") # 下载目标模型 prompts = Prompts(model=model_name) user_input = input("请输入您的问题:") response = prompts.prompt(user_input).text.strip() print(response) if __name__ == "__main__": main() ``` 上述程序首先确保环境配置正确无误之后,再向用户提供实时查询接口功能[^3]。 #### 设计高质量Prompt的关键要素 值得注意的是,在实际操作当中还需要遵循一定的工程准则才能让最终效果达到预期水平。例如给予足够的上下文线索以便于机器能够充分展开逻辑链条;同时也要注意控制好每一步骤之间的过渡衔接流畅度等问题[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值