HuggingFace镜像/flan-alpaca-gpt4-xl-openmind
模型介绍文件和版本分析
下载使用量0

🍮 🦙 Flan-Alpaca:基于人类与机器的指令调优

🎆 🧨 🔥 🎠 Mustango 登场,这是多模态大型语言模型领域中一款令人兴奋的新成员,专为可控音乐生成而设计。Mustango 借助潜在扩散模型(LDM)、Flan-T5 和音乐特征施展“魔法”!

📣 我们推出了 Red-Eval,用于通过多个越狱提示词评估大型语言模型(LLM)的安全性。使用 Red-Eval,在 DangerousQA 和 HarmfulQA 基准测试中,对 GPT-4 的越狱/红队攻击成功率可达 65.1%,对 ChatGPT 的越狱成功率为 73%。更多详情请见:代码 和 论文。

📣 我们通过在 Flan 数据集上对 Vicuna-13B 进行微调,开发了 Flacuna。Flacuna 在解决问题方面优于 Vicuna。在此访问模型:https://huggingface.co/declare-lab/flacuna-13b-v1.0。

📣 想了解 🍮 🦙 Flan-Alpaca 在大规模 LLM 评估基准 InstructEval 上的表现吗?阅读我们的论文 https://arxiv.org/pdf/2306.04757.pdf。我们评估了 10 多个开源指令调优 LLM,它们分属不同的 LLM 家族,包括 Pythia、LLaMA、T5、UL2、OPT 和 Mosaic。代码和数据集:https://github.com/declare-lab/instruct-eval

📣 FLAN-T5 在文本到音频生成方面也很有用。如果您感兴趣,可以在 https://github.com/declare-lab/tango 查看我们的研究成果。

我们的 仓库 包含用于将 Stanford Alpaca 的合成指令调优扩展到现有指令调优模型(如 Flan-T5)的代码。 感谢 Joao Gante,我们提供了一个 实时交互式演示! 我们还在 declare-lab/flan-eval 对许多指令调优模型进行基准测试。 我们的预训练模型可在 HuggingFace 🤗 上完全获取:

模型参数规模指令数据训练 GPU
Flan-Alpaca-Base2.2 亿Flan、Alpaca1x A6000
Flan-Alpaca-Large7.7 亿Flan、Alpaca1x A6000
Flan-Alpaca-XL30 亿Flan、Alpaca1x A6000
Flan-Alpaca-XXL110 亿Flan、Alpaca4x A6000 (FSDP)
Flan-GPT4All-XL30 亿Flan、GPT4All1x A6000
Flan-ShareGPT-XL30 亿Flan、ShareGPT/Vicuna1x A6000
Flan-Alpaca-GPT4-XL*30 亿Flan、GPT4-Alpaca1x A6000

*推荐用于获得更优性能

为何选择此方案?

Alpaca 为低成本且便捷地逼近 ChatGPT 等大型语言模型(LLMs)的性能开辟了令人振奋的新方向。具体而言,它们利用 GPT-3 等大型语言模型生成指令作为合成训练数据。这些涵盖 5 万多项任务的合成数据可用于微调规模更小的模型。然而,由于底层 LLaMA 模型的许可限制,原始实现的可访问性较低。此外,用户已注意到合成数据集中存在潜在噪声。因此,探索一种完全可访问、且已在高质量(尽管多样性较低)指令上训练的模型(如 Flan-T5)可能是更优选择。

在 Openmind 中的应用

import torch
import argparse
from openmind import AutoTokenizer, is_torch_npu_available
from transformers import AutoModelForSeq2SeqLM
import time

def parse_args():
   parser = argparse.ArgumentParser(description="Eval the model")
   parser.add_argument(
       "--model_name_or_path",
       type=str,
       help="path or model",
       default="jeffding/flan-alpaca-gpt4-xl-openmind",
   )
   args = parser.parse_args()
   return args


def main():
   args = parse_args()
   model_path = args.model_name_or_path

   if is_torch_npu_available():
       device = "npu:0"
   else:
       device = "cpu"
   
   tokenizer = AutoTokenizer.from_pretrained(model_path)
   model = AutoModelForSeq2SeqLM.from_pretrained(model_path).to(device)

   data = "translate English to German:That is good."
    
   start_time = time.time()

   encoded = tokenizer([data], return_tensors="pt").to(device)
   translation = model.generate(**encoded)
   result = tokenizer.batch_decode(translation, skip_special_tokens=True)[0]
   print(result)

   end_time = time.time()
   print(f"硬件环境:{device},推理执行时间:{end_time - start_time}秒")

if __name__ == "__main__":
   main()

使用方法

from transformers import pipeline

prompt = "Write an email about an alpaca that likes flan"
model = pipeline(model="declare-lab/flan-alpaca-gpt4-xl")
model(prompt, max_length=128, do_sample=True)

# Dear AlpacaFriend,
# My name is Alpaca and I'm 10 years old.
# I'm excited to announce that I'm a big fan of flan!
# We like to eat it as a snack and I believe that it can help with our overall growth.
# I'd love to hear your feedback on this idea. 
# Have a great day! 
# Best, AL Paca