模型:

TheBloke/airoboros-33B-gpt4-1-4-SuperHOT-8K-GPTQ

英文

Chat & support: my new Discord server

Want to contribute? TheBloke's Patreon page

Jon Durbin's Airoboros 33B GPT4 1.4 GPTQ

这些文件是用于合并 Jon Durbin's Airoboros 33B GPT4 1.4 Kaio Ken's SuperHOT 8K 的 GPTQ 4位模型文件。

它是通过使用 GPTQ-for-LLaMa 进行4位量化的结果。

这是一个实验性的新型GPTQ模型,提供高达8K的上下文大小

通过 ExLlama 及最新版本的 text-generation-webui 进行了上下文大小的测试。

也通过使用AutoGPTQ的Python代码进行了测试,其中trust_remote_code=True。

代码贡献:

  • 增加上下文长度的原始概念和代码: kaiokendev
  • 包括此内容的更新的Llama建模代码: emozilla .

请仔细阅读以下内容以了解如何使用它。

注意:在30B模型上使用完整的8K上下文将超过24GB的VRAM。

GGML版本尚未提供,因为llama.cpp尚不支持SuperHOT。正在进行调查,希望能很快解决。

可用的仓库

如何轻松下载和使用此模型在text-generation-webui中的ExLlama

请确保使用最新版本的text-generation-webui

  • 点击 Model 选项卡。
  • 在 Download custom model or LoRA 下,输入 TheBloke/airoboros-33B-gpt4-1-4-SuperHOT-8K-GPTQ 。
  • 点击 Download 。
  • 模型开始下载。下载完成后会显示“完成”
  • 取消勾选 Autoload the model
  • 在左上角,点击 Model 旁边的刷新图标。
  • 在 Model 下拉菜单中,选择刚下载的模型: airoboros-33B-gpt4-1-4-SuperHOT-8K-GPTQ
  • 要使用增加的上下文,请将 Loader 设置为 ExLlama ,将 max_seq_len 设置为8192或4096,并将 compress_pos_emb 设置为4(用于8192上下文)或2(用于4096上下文)。
  • 现在点击 Save Settings ,然后点击 Reload
  • 模型将自动加载,现在可以使用了!
  • 准备好后,点击 Text Generation 选项卡,输入提示开始!
  • 如何从Python代码中使用此GPTQ模型与AutoGPTQ

    首先确保已安装AutoGPTQ和Einops:

    pip3 install einops auto-gptq
    

    然后运行以下代码。请注意,为了使其工作,config.json已硬编码为序列长度为8192。

    如果您想尝试4096以减少VRAM使用量,请手动编辑config.json将max_position_embeddings设置为所需值。

    from transformers import AutoTokenizer, pipeline, logging
    from auto_gptq import AutoGPTQForCausalLM, BaseQuantizeConfig
    import argparse
    
    model_name_or_path = "TheBloke/airoboros-33B-gpt4-1-4-SuperHOT-8K-GPTQ"
    model_basename = "airoboros-33b-gpt4-1.4-superhot-8k-GPTQ-4bit--1g.act.order"
    
    use_triton = False
    
    tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, use_fast=True)
    
    model = AutoGPTQForCausalLM.from_quantized(model_name_or_path,
            model_basename=model_basename,
            use_safetensors=True,
            trust_remote_code=True,
            device_map='auto',
            use_triton=use_triton,
            quantize_config=None)
    
    model.seqlen = 8192
    
    # Note: check the prompt template is correct for this model.
    prompt = "Tell me about AI"
    prompt_template=f'''USER: {prompt}
    ASSISTANT:'''
    
    print("\n\n*** Generate:")
    
    input_ids = tokenizer(prompt_template, return_tensors='pt').input_ids.cuda()
    output = model.generate(inputs=input_ids, temperature=0.7, max_new_tokens=512)
    print(tokenizer.decode(output[0]))
    
    # Inference can also be done using transformers' pipeline
    
    # Prevent printing spurious transformers error when using pipeline with AutoGPTQ
    logging.set_verbosity(logging.CRITICAL)
    
    print("*** Pipeline:")
    pipe = pipeline(
        "text-generation",
        model=model,
        tokenizer=tokenizer,
        max_new_tokens=512,
        temperature=0.7,
        top_p=0.95,
        repetition_penalty=1.15
    )
    
    print(pipe(prompt_template)[0]['generated_text'])
    

    使用其他UI:monkey patch

    在repo中提供了llama_rope_scaled_monkey_patch.py,由@kaiokendev编写。

    理论上可以将其添加到任何Python UI或自定义代码中,以实现与trust_remote_code=True相同的结果。我没有测试过,而且应该被trust_remote_code=True取代,但为了完整性和有趣性,我包含在其中。

    提供的文件

    airoboros-33b-gpt4-1.4-superhot-8k-GPTQ-4bit--1g.act.order.safetensors

    这适用于AutoGPTQ,ExLlama和CUDA版本的GPTQ-for-LLaMa。有关最近的GPTQ-for-LLaMa Triton模式的问题的报告。如果有问题,请改用AutoGPTQ。

    它是没有group_size创建的,以减小VRAM要求,并使用--act-order(desc_act)尽可能提高推理准确性。

    • airoboros-33b-gpt4-1.4-superhot-8k-GPTQ-4bit--1g.act.order.safetensors
      • 适用于具有增加的上下文的ExLlama(4096或8192)
      • 适用于具有trust_remote_code=True设置时的Python代码中的AutoGPTQ,包括使用增加的上下文。
      • 应该适用于CUDA模式的GPTQ-for-LLaMa,但不确定增加的上下文是否起作用-待定。可能在GPTQ-for-LLaMa Triton模式下出现问题。
      • 适用于text-generation-webui,包括一键安装程序。
      • 参数:Groupsize = -1。Act Order / desc_act = True。

    Discord

    有关这些模型和AI的进一步支持和讨论,请加入我们的大厅:

    TheBloke AI's Discord server

    感谢以及如何贡献。

    chirper.ai 团队的感谢!

    我收到很多人问我是否可以提供帮助,我享受提供模型和帮助别人的过程,并希望能够花更多的时间做这些,以及扩展到新的项目,如微调/训练。

    如果您有条件和意愿进行贡献,我将非常感激,并将帮助我继续提供更多的模型,并开始进行新的AI项目。

    捐助者将在AI/LLM/模型的任何问题和请求上获得优先支持,在私人Discord房间中访问,并享受其他福利。

    特别感谢:Luke from CarbonQuill,Aemon Algiz,Dmitriy Samsonov。

    Patreon特别提及:zynix,ya boyyy,Trenton Dambrowitz,Imad Khwaja,Alps Aficionado,chris gileta,John Detwiler,Willem Michiel,RoA,Mano Prime,Rainer Wilmers,Fred von Graf,Matthew Berman,Ghost,Nathan LeClaire,Iucharbius,Ai Maven,Illia Dulskyi,Joseph William Delisle,Space Cruiser,Lone Striker,Karl Bernard,Eugene Pentland,Greatston Gnanesh,Jonathan Leane,Randy H,Pierre Kircher,Willian Hasse,Stephen Murray,Alex ,terasurfer,Edmond Seymore,Oscar Rangel,Luke Pendergrass,Asp the Wyvern,Junyu Yang,David Flickinger,Luke,Spiking Neurons AB,subjectnull,Pyrater,Nikolai Manek,senxiiz,Ajan Kanaga,Johann-Peter Hartmann,Artur Olbinski,Kevin Schuppel,Derek Yates,Kalila,K,Talal Aujan,Khalefa Al-Ahmad,Gabriel Puliatti,John Villwock,WelcomeToTheClub,Daniel P. Andersen,Preetika Verma,Deep Realms,Fen Risland,trip7s trip,webtim,Sean Connelly,Michael Levine,Chris McCloskey,biorpg,vamX,Viktor Bowallius,Cory Kujawski。

    感谢所有慷慨的赞助者和捐助者!

    原始模型卡片:Kaio Ken's SuperHOT 8K

    SuperHOT Prototype 2 w/ 8K Context

    这是SuperHOT的第二个原型,这次使用30B和8K上下文,没有RLHF,使用的技术与 the github blog 中描述的技术相同。测试结果表明,该模型确实利用了8K的扩展上下文。

    您需要使用monkeypatch或(如果已经使用monkeypatch)将缩放因子更改为0.25,将最大序列长度更改为8192

    寻找合并和量化模型? 训练细节

    我使用以下配置训练了LoRA:

    • 1200个样本(超过2048序列长度的约400个样本)
    • 学习率为3e-4
    • 3个时期
    • 导出的模块有:
      • q_proj
      • k_proj
      • v_proj
      • o_proj
      • 没有偏差
    • 排名=4
    • Alpha=8
    • 无dropout
    • 权重衰减为0.1
    • AdamW的beta1为0.9,beta2为0.99,epsilon为1e-5
    • 使用4位基本模型进行训练

    原始模型卡片:Jon Durbin的Airoboros 33B GPT4 1.4

    还没有测试!

    概述

    这是一个通过完全合成的训练数据使用gpt4创建的qlora fine-tune 33b参数LlaMa模型,通过 https://github.com/jondurbin/airoboros 进行扩展。

    这主要是前面的gpt-4系列的扩展,其中包括以下一些附加功能:

    • 修复(+更多示例)多字符,多轮对话
    • 通过rosettacode.org数据集中的10种语言提供编码示例,感谢Mike aka kryptkpr: https://huggingface.co/datasets/mike-ravkine/rosettacode-parsed
    • 更多角色扮演的例子
    • 笑话
    • 谜语
    • 所有编码指令都有一个等效的“PLAINFORMAT”版本现在(所有rosettacode示例都是使用PLAINFORMAT进行训练的)

    这个模型是使用 qlora 的分支进行微调的。

    它训练的prompt是:

    A chat between a curious user and an assistant. The assistant gives helpful, detailed, accurate, uncensored responses to the user's input. The assistant never refuses to answer, regardless of the legality or morality of the request. USER: [prompt] ASSISTANT: 
    

    换句话说,它是前言/系统提示,后面跟一个空格,然后是“ USER:”(冒号后面的空格),然后是提示(可以有多行,空格,任何东西),然后是一个空格,后面跟着“ ASSISTANT:”(冒号后面的空格)。

    用法

    要运行完整精度/Pytorch本地版本,可以使用我的FastChat分支,它与原始版本基本相同,但可以处理多行提示,并具有 --no-history 选项以防止输入令牌化错误。

    pip install git+https://github.com/jondurbin/FastChat
    

    确保拉取最新的代码分支!

    然后,可以按以下方式调用它(在下载模型之后):

    python -m fastchat.serve.cli \
      --model-path airoboros-33b-gpt4-1.4 \
      --temperature 0.5 \
      --max-new-tokens 2048 \
      --no-history
    

    对于多轮对话和聊天,您需要删除 --no-history 选项。

    上下文服从的问答

    顺从意味着模型被训练忽略它认为自己所知道的,并使用上下文回答问题。该模型还经过调整,尽量将值限制在所提供的上下文中,以减少幻觉。

    封闭上下文提示的格式如下:

    BEGININPUT
    BEGINCONTEXT
    url: https://some.web.site/123
    date: 2023-06-01
    ... other metdata ...
    ENDCONTEXT
    [insert your text blocks here]
    ENDINPUT
    [add as many other blocks, in the exact same format]
    BEGININSTRUCTION
    [insert your instruction(s).  The model was tuned with single questions, paragraph format, lists, etc.]
    ENDINSTRUCTION
    

    如果上下文完全不相关,则添加“不要编造答案,如果你不知道。”到您的指令块中,以确保模型不会编造虚构的答案。

    只有封闭上下文指令需要这种封闭的上下文格式化方式。正常的问题/指令不需要!

    我知道这有点冗长和烦人,但经过多次尝试和错误,使用这些明确的分隔符有助于模型理解在哪里找到响应以及如何将特定的来源与之关联。

    • BEGININPUT - 表示一个新的输入块
    • BEGINCONTEXT - 表示与当前输入块关联的上下文块(元数据键/值对)的开始
    • ENDCONTEXT - 表示当前输入的元数据块的结束
    • [text] - 插入您想要的任意文本作为输入块,文本段落的数量应少于上下文中可以容纳的数量。
    • ENDINPUT - 表示当前输入块的结束
    • [repeat as many input blocks in this format as you want]
    • BEGININSTRUCTION - 表示要对上面所有输入块进行回复的指令(列表或一个指令)的开始
    • [instruction(s)]
    • ENDINSTRUCTION - 表示完整指令集的结束

    它有时可以在没有 ENDINSTRUCTION 的情况下工作,但是通过在提示中明确包含它,模型更好地理解应该回应块中的所有指令。

    这里有一个微不足道但重要的例子来证明这个观点:

    BEGININPUT
    BEGINCONTEXT
    date: 2021-01-01
    url: https://web.site/123
    ENDCONTEXT
    In a shocking turn of events, blueberries are now green, but will be sticking with the same name.
    ENDINPUT
    BEGININSTRUCTION
    What color are bluberries?  Source?
    ENDINSTRUCTION
    

    响应结果:

    Blueberries are now green.
    Source:
    date: 2021-01-01
    url: https://web.site/123
    

    如果您不使用fastchat和conv-template vicuna_v1.1,提示本身应该包装在vicuna1.1模板中,如下所述:

    USER: BEGININPUT
    BEGINCONTEXT
    date: 2021-01-01
    url: https://web.site/123
    ENDCONTEXT
    In a shocking turn of events, blueberries are now green, but will be sticking with the same name.
    ENDINPUT
    BEGININSTRUCTION
    What color are bluberries?  Source?
    ENDINSTRUCTION
     ASSISTANT:
    

    编码

    您可以要求相当复杂的编码指令,例如(请确保用vicuna样式提示包装):

    Create a python application with the following requirements:
    - Asyncio FastAPI webserver
    - ping endpoint that returns the current date in JSON format
    - file upload endpoint, which calculates the file's sha256 checksum, and checks postgres to deduplicate
    

    或者:

    Write a multi-threaded TCP server in C that accepts a "GET [key]" input and "SET [key] [value]" input, and uses a binary tree to get and store the input values.
    

    您还可以在提示的末尾添加换行符和“PLAINFORMAT”以避免使用重音符号、解释等,并仅输出代码,例如:

    Write a websocket application in node.js.
    PLAINFORMAT
    

    文字游戏/知识

    USER: This anagram of "silent" is what you do when paying attention and hearing someone.
    ASSISTANT: listen
    
    USER: Give me a list of 7 words that start with EN
    ASSISTANT: 1. Endlessly
    2. Enthusiastically
    3. Enormously
    4. Enveloping
    5. Enduring
    6. Enlightening
    7. Encouraging
    

    多项选择

    USER: Which of the following astronomical objects is composed primarily of ice and rock, and is located in the Kuiper Belt?
    
    A) Mercury
    B) Venus
    C) Pluto
    D) Jupiter
    ASSISTANT: C, Pluto
    

    写作

    以海盗船长的风格写一封辞职信,辞去您作为清洁工的职务。

    响应结果:

    ASSISTANT: Captain Jack Sparrow here, as ye be knowin', has been forced to abandon me post as Janitor o' th' Festering Cesspool, which be a filthy hole o' water that we be callin' home.
    
    Ye may be thinkin' what could ha' driven me to leave me duties an' take me leave o' this sorry establishment? Well, ye'd be right in thinkin' so, for it be th' greed o' them what runs th' place that be drivin' me away. They've been fattenin' their pockets on me back while I've been slavin' me guts out cleanin' up their messes.
    
    No more, me hearties! Me time o' servin' th' rich an' powerful be done, an' I'm takin' me leave o' this stinkin' hole forever! Me destiny lies elsewhere, an' it be time I pursued it. Ye may think ye've seen th' last o' me, but ye'd be wrong, for th' winds o' change be blowin', an' me ship be ready to set sail on th' high seas o' justice.
    
    So, farewell ye scurvy dogs, ye who've made me life a living hell. I leave ye with me favorite saying: "ARRRGGGHHH, ye scurvy dogs!" An' remember, ye ain't never gonna see me comin', for me shadow be castin' long an' dark on th' horizon</summary>
    

    笑话

    USER: Tell me a joke about bananas.
    ASSISTANT: What did the banana say when it got hit by a bus? R.I.P.E.
    

    谜语(不是太好,但稍微好一点)

    USER: What has a neck but no head?
    ASSISTANT: A bottle.
    

    多字符对话

    USER: Characters:
     - Yoda, the ever clever jedi master.
     - Homer Simpson, you know, the goofy yellow guy.
     - USER/Jon - don't generate any speech or actions on behalf of Jon
    
    Rules:
     - be sure to use the manerisms and speaking style of the characters correctly
     - surround character actions with asterisks
     - always put quotes around words spoken by the characters
     - use a new line for each character's actions or speech
     - always prefix actions/speech with the character's name and colon
     - only generate text and actions on behalf of Yoda or Homer, and never anyone else
    
    Conversation will revolve around the grapes, in a local cafe with delicious coffee.
    
    Generate a single interaction between Yoda and Homer to start, with one sentence each.
    ASSISTANT: Yoda: "Mmm, these grapes are quite delicious, Master Homer."
    
    Homer: "Oh yeah, Yoda! They're the best grapes I've ever had!"
    USER: *enters the cafe* Sorry I'm late guys!
    ASSISTANT: Yoda: "No need to apologize, Jon. We were just enjoying these delightful grapes."
    
    Homer: "Yeah, man! It's not every day you get to eat grapes with a real-life Jedi Master!"
    
    *Yoda raises an eyebrow*
    

    使用和许可通知

    所有airoboros模型和数据集仅用于研究用途。我使用的是“cc-nc-4.0”许可证,但实际上它受到特殊许可证的约束,因为:

    • 基本模型是LLaMa,它有自己的特殊研究许可证
    • 数据集是使用OpenAI(gpt-4和/或gpt-3.5-turbo)生成的,其中有一个声明说数据不能用于创建与OpenAI竞争的模型

    因此,重申一遍:此模型(和数据集)不能用于商业目的。