英文

# Ctranslate2快速推理

通过在CPU或GPU上使用C++中的int8推理,加速推理并将内存减少2倍-4倍。

bigcode/starcoder 的量化版本

pip install hf-hub-ctranslate2>=2.12.0 ctranslate2>=3.16.0
# from transformers import AutoTokenizer
model_name = "michaelfeil/ct2fast-starcoder"


from hf_hub_ctranslate2 import GeneratorCT2fromHfHub
model = GeneratorCT2fromHfHub(
        # load in int8 on CUDA
        model_name_or_path=model_name,
        device="cuda",
        compute_type="int8_float16",
        # tokenizer=AutoTokenizer.from_pretrained("{ORG}/{NAME}")
)
outputs = model.generate(
    text=["def fibonnaci(", "User: How are you doing? Bot:"],
    max_length=64,
    include_prompt_in_result=False
)
print(outputs)

ctranslate2>=3.16.0 hf-hub-ctranslate2>=2.12.0 兼容的检查点

  • 针对device="cuda"的compute_type=int8_float16
  • 针对device="cpu"的compute_type=int8

使用

ct2-transformers-converter --model bigcode/starcoder --output_dir ~/tmp-ct2fast-starcoder --force --copy_files merges.txt tokenizer.json README.md tokenizer_config.json vocab.json generation_config.json special_tokens_map.json .gitattributes --quantization int8_float16 --trust_remote_code
于2023-06-27进行转换

许可证和其他备注:

这只是一个量化版本。许可条件应与原始的huggingface存储库相同。

原始描述

StarCoder

StarCoder Playground 上玩这个模型。

目录

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

    StarCoder模型是由 The Stack (v1.2) 的80多种编程语言训练的1550亿参数模型,排除了退出请求。该模型使用 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}
    }