英文

Chat & support: my new Discord server

Want to contribute? TheBloke's Patreon page

Bigcode's StarcoderPlus GPTQ

这些文件是用于 Bigcode's StarcoderPlus 的GPTQ 4位模型文件。

它是使用 AutoGPTQ 进行4位量化的结果。

可用的存储库

如何轻松下载和使用此文本生成网络用户界面中的模型

请确保您正在使用最新版本的文本生成网络用户界面

  • 点击 模型 选项卡。
  • 在 下载自定义模型或LoRA 下,输入 TheBloke/starcoderplus-GPTQ 。
  • 点击 下载 。
  • 模型将开始下载。下载完成后将显示"完成"
  • 在左上角,点击 模型 旁边的刷新图标。
  • 在模型下拉列表中,选择刚刚下载的模型:starcoderplus-GPTQ
  • 模型将自动加载,现在可以使用了!
  • 如果您想要任何自定义设置,请设置它们,然后依次点击 保存此模型的设置 ,然后点击 重新加载模型 在右上角。
    • 请注意,您无需再设置GPTQ参数。这些参数将自动从文件 quantize_config.json 中设置。
  • 准备就绪后,点击 文本生成 选项卡并输入提示即可开始!
  • 如何从Python代码中使用此GPTQ模型

    首先确保您已安装 AutoGPTQ

    pip install auto-gptq

    然后尝试以下示例代码:

    from transformers import AutoTokenizer, pipeline, logging
    from auto_gptq import AutoGPTQForCausalLM, BaseQuantizeConfig
    import argparse
    
    model_name_or_path = "TheBloke/starcoderplus-GPTQ"
    
    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="cuda:0",
            use_triton=use_triton,
            quantize_config=None)
    
    print("\n\n*** Generate:")
    
    inputs = tokenizer.encode("def print_hello_world():", return_tensors="pt").to(device)
    outputs = model.generate(inputs)
    print(tokenizer.decode(outputs[0]))
    

    中间填充

    中间填充使用特殊标记来识别输入和输出的前缀/中间/后缀部分:

    input_text = "<fim_prefix>def print_hello_world():\n    <fim_suffix>\n    print('Hello world!')<fim_middle>"
    inputs = tokenizer.encode(input_text, return_tensors="pt").to(device)
    outputs = model.generate(inputs)
    print(tokenizer.decode(outputs[0]))
    

    提供的文件

    gptq_model-4bit--1g.safetensors

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

    它是在没有group_size的情况下创建的,以降低VRAM要求,并且使用了--act-order (desc_act) ,以尽可能提高推理准确性。

    • gptq_model-4bit--1g.safetensors
      • 适用于AutoGPTQ以CUDA或Triton模式。
      • 适用于文本生成网络用户界面,包括一键安装程序。
      • 适用于GPTQ-for-LLaMa以CUDA模式。GPTQ-for-LLaMa Triton模式可能会有问题。
      • 参数:Groupsize = -1. Act Order / desc_act = True.

    Discord

    如需进一步支持以及有关这些模型和AI的讨论,请加入我们:

    TheBloke AI's Discord server

    感谢和如何贡献。

    感谢 chirper.ai 团队!

    我收到很多人的询问,他们是否可以为此做出贡献。我喜欢提供模型和帮助人们,并且很愿意能够投入更多时间来做这些事情,以及扩展到新的项目,如精细调整/训练。

    如果您能够并且愿意做出贡献,我将非常感激,并且这将帮助我继续提供更多模型,并开始进行新的AI项目。

    捐助者将在所有与AI / LLM /模型相关的问题和请求上得到优先支持,可以访问私人Discord房间,以及其他福利。

    特别鸣谢 : 来自CarbonQuill的Luke、Aemon Algiz、Dmitriy Samsonov。

    Patreon特别提及 : Ajan Kanaga、Kalila、Derek Yates、Sean Connelly、Luke、Nathan LeClaire、Trenton Dambrowitz、Mano Prime、David Flickinger、vamX、Nikolai Manek、senxiiz、Khalefa Al-Ahmad、Illia Dulskyi、trip7s trip、Jonathan Leane、Talal Aujan、Artur Olbinski、Cory Kujawski、Joseph William Delisle、Pyrater、Oscar Rangel、Lone Striker、Luke Pendergrass、Eugene Pentland、Johann-Peter Hartmann。

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

    原始模型卡片:Bigcode's StarcoderPlus

    StarCoderPlus

    StarChat-Beta 上使用经调整的StarCoderPlus进行体验。

    目录

  • 模型摘要
  • 使用
  • 限制
  • 训练
  • 许可证
  • 引用
  • 模型摘要

    StarCoderPlus是根据来自英文网络数据集与 StarCoderData 以及维基百科数据集的600B标记进行微调的版本。它是一个15.5B参数的语言模型,经过了英文和80多种编程语言的训练。模型使用 Multi Query Attention a context window of 8192 tokens 进行训练,使用 Fill-in-the-Middle objective 进行了1.6万亿次标记的训练。

    使用

    预期用途

    该模型是根据英文文本和GitHub代码进行训练的。因此,对于"编写一个计算平方根的函数"之类的命令,它的效果并不好。然而,在 StarChat 中进行了指令调优,成为了一种能力强大的助手。

    欢迎在社区选项卡中共享您的生成结果!

    生成

    # pip install -q transformers
    from transformers import AutoModelForCausalLM, AutoTokenizer
    
    checkpoint = "bigcode/starcoderplus"
    device = "cuda" # for GPU usage or "cpu" for CPU usage
    
    tokenizer = AutoTokenizer.from_pretrained(checkpoint)
    model = AutoModelForCausalLM.from_pretrained(checkpoint).to(device)
    
    inputs = tokenizer.encode("def print_hello_world():", return_tensors="pt").to(device)
    outputs = model.generate(inputs)
    print(tokenizer.decode(outputs[0]))
    

    中间填充

    中间填充使用特殊标记来识别输入和输出的前缀/中间/后缀部分:

    input_text = "<fim_prefix>def print_hello_world():\n    <fim_suffix>\n    print('Hello world!')<fim_middle>"
    inputs = tokenizer.encode(input_text, return_tensors="pt").to(device)
    outputs = model.generate(inputs)
    print(tokenizer.decode(outputs[0]))
    

    归属和其他要求

    模型的训练代码数据集仅包含具有允许许可证的内容。尽管如此,模型可以直接从数据集生成源代码。代码的许可证可能需要归属和/或其他特定要求,必须遵守。我们提供一个 search index 让您搜索预训练数据以确定生成的代码来自何处,并对代码进行适当的归属。

    限制

    该模型经过训练,混合了来自网络和GitHub代码的英文文本。因此,当处理非英文文本时,可能会遇到限制,并可能带有在在线环境中常见的偏见和刻板印象。此外,生成的代码应谨慎使用,因为它可能包含错误、低效性或潜在漏洞。要全面了解基础模型的代码限制,请参阅参考 StarCoder paper

    训练

    StarCoderPlus是在StarCoderBase的600B英语和代码标记上进行调优的版本,StarCoderBase在1T代码标记上进行了预训练。以下是微调的详细信息:

    模型

    • 结构: GPT-2模型,具有多查询注意力和填充中间目标
    • 微调步骤: 150k
    • 微调标记: 600B
    • 精度: bfloat16

    硬件

    • GPU: 512台Tesla A100
    • 训练时间: 14天

    软件

    许可证

    该模型根据BigCode OpenRAIL-M v1许可协议授权。您可以在这里找到完整的协议 here