英文

Chat & support: my new Discord server

Want to contribute? TheBloke's Patreon page

Bigcode's Starcoder GPTQ

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

这是使用 AutoGPTQ 进行4bit量化的结果。

可用的存储库

提示

该模型是在GitHub代码上训练的。

因此,它不是一种指令模型,像“编写一个计算平方根的函数。”这样的命令效果不好。

但是,使用 Tech Assistant prompt 您可以将其转变为一个功能强大的技术助手。

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

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

  • 点击“模型”选项卡。
  • 在“下载自定义模型或LoRA”下,输入“TheBloke/starcoder-GPTQ”。
  • 点击“下载”。
  • 模型开始下载。下载完成后,将显示“完成”。
  • 在左上角,单击“模型”旁边的刷新图标。
  • 在“模型”下拉菜单中,选择您刚刚下载的模型:starcoder-GPTQ。
  • 模型将自动加载,现在已经准备好使用!
  • 如果你需要任何自定义设置,请设置完毕后,依次点击“为此模型保存设置”和右上角的“重新加载模型”。
    • 请注意,您不需要再单独设置GPTQ参数。这些参数将从文件quantize_config.json中自动设置。
  • 准备好后,点击“文本生成”选项卡并输入提示即可开始!
  • 如何使用此GPTQ模型的Python代码

    首先确保您安装了 AutoGPTQ

    pip install auto-gptq

    然后尝试以下示例代码:

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

    提供的文件

    gptq_model-4bit--1g.safetensors

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

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

    • gptq_model-4bit--1g.safetensors
      • 适用于AutoGPTQ的CUDA或Triton模式。
      • 不适用于GPTQ-for-LLaMa。
      • 适用于文本生成网页界面,包括一键安装程序。
      • 参数: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的Starcoder

    Starcoder

    StarCoder Playground 上玩这个模型。

    目录

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

    Starcoder模型是使用来自 The Stack (v1.2) 的80多种编程语言的41.5B参数模型进行训练的,排除了选择退出的数据集。该模型使用 Multi Query Attention a context window of 8192 tokens Fill-in-the-Middle objective 进行训练,训练数据总量为1万亿个标记。

    使用方法

    预期用途

    该模型在GitHub代码上进行了训练。因此,它不是一种指令模型,像“编写一个计算平方根的函数。”这样的命令的效果不好。但是,通过使用 Tech Assistant prompt ,您可以将其变成一个功能强大的技术助手。

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

    生成

    # pip install -q transformers
    from transformers import AutoModelForCausalLM, AutoTokenizer
    
    checkpoint = "bigcode/starcoder"
    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 ,您可以通过它搜索预训练数据,查找生成的代码来自于何处,并对您的代码应用正确的归属。

    限制

    该模型经过训练,可以处理来自80多种编程语言的源代码。源代码的主要自然语言是英语,但也包含其他语言。因此,该模型可以在提供一些上下文的情况下生成代码片段,但无法保证生成的代码能够按预期工作。它可能效率低下,包含错误或漏洞。有关该模型限制的详细讨论,请参阅 the paper

    训练

    模型

    • 架构: GPT-2 模型具有多查询注意力和填充中心目标
    • 预训练步骤: 250k
    • 预训练标记数: 1万亿个
    • 精度: bfloat16

    硬件

    • GPU: 512个Tesla A100
    • 训练时间: 24天

    软件

    许可证

    该模型在BigCode OpenRAIL-M v1许可协议下许可。您可以在 here 找到完整的协议内容。

    引用

    @article{li2023starcoder,
          title={StarCoder: may the source be with you!}, 
          author={Raymond Li and Loubna Ben Allal and Yangtian Zi and Niklas Muennighoff and Denis Kocetkov and Chenghao Mou and Marc Marone and Christopher Akiki and Jia Li and Jenny Chim and Qian Liu and Evgenii Zheltonozhskii and Terry Yue Zhuo and Thomas Wang and Olivier Dehaene and Mishig Davaadorj and Joel Lamy-Poirier and João Monteiro and Oleh Shliazhko and Nicolas Gontier and Nicholas Meade and Armel Zebaze and Ming-Ho Yee and Logesh Kumar Umapathi and Jian Zhu and Benjamin Lipkin and Muhtasham Oblokulov and Zhiruo Wang and Rudra Murthy and Jason Stillerman and Siva Sankalp Patel and Dmitry Abulkhanov and Marco Zocca and Manan Dey and Zhihan Zhang and Nour Fahmy and Urvashi Bhattacharyya and Wenhao Yu and Swayam Singh and Sasha Luccioni and Paulo Villegas and Maxim Kunakov and Fedor Zhdanov and Manuel Romero and Tony Lee and Nadav Timor and Jennifer Ding and Claire Schlesinger and Hailey Schoelkopf and Jan Ebert and Tri Dao and Mayank Mishra and Alex Gu and Jennifer Robinson and Carolyn Jane Anderson and Brendan Dolan-Gavitt and Danish Contractor and Siva Reddy and Daniel Fried and Dzmitry Bahdanau and Yacine Jernite and Carlos Muñoz Ferrandis and Sean Hughes and Thomas Wolf and Arjun Guha and Leandro von Werra and Harm de Vries},
          year={2023},
          eprint={2305.06161},
          archivePrefix={arXiv},
          primaryClass={cs.CL}
    }