当前位置:   article > 正文

StarCoder - 源代码大模型

starcoder

StarCoder 是一种在源代码和自然语言文本上训练的语言模型 (LM)。 它的训练数据包含 80 多种不同的编程语言以及从 github 问题和提交以及笔记本中提取的文本。

StarCoder 是在 github 代码上训练的,因此它可以用来执行代码生成。 更准确地说,模型可以完成一个功能的实现,或者在一行代码中推断出后面的字符。 这可以在 hugging faces 的transformers库的帮助下完成。

在这里插入图片描述

推荐:用 NSDT设计器 快速搭建可编程3D场景。

1、StarCoder快速上手

首先,我们必须安装 requirements.txt 中列出的所有库:

pip install -r requirements.txt
  • 1

StarCoder代码生成流水线如下:

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]))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

或:

from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
checkpoint = "bigcode/starcoder"

model = AutoModelForCausalLM.from_pretrained(checkpoint)
tokenizer = AutoTokenizer.from_pretrained(checkpoint)

pipe = pipeline("text-generation", model=model, tokenizer=tokenizer, device=0)
print( pipe("def hello():") )
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

StarCoder文本生成推理命令如下:

docker run --gpus '"device:0"' -p 8080:80 -v $PWD/data:/data -e HUGGING_FACE_HUB_TOKEN=<YOUR BIGCODE ENABLED TOKEN> -e HF_HUB_ENABLE_HF_TRANSFER=0 -d  ghcr.io/huggingface/text-generation-inference:sha-880a76e --model-id bigcode/starcoder --max-total-tokens 8192
  • 1

有关详细信息,请参阅此处

2、StarCoder微调

在这里,我们展示了如何针对特定的下游任务微调此 LM。

首先新建conda环境并激活:

conda create -n env
conda activate env
  • 1
  • 2

从此处安装与你的 cuda 版本兼容的 pytorch 版本,以下命令适用于 cuda 11.6:

conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.6 -c pytorch -c nvidia
  • 1

安装transformers和peft库:

conda install -c huggingface transformers 
pip install git+https://github.com/huggingface/peft.git
  • 1
  • 2

请注意,你可以使用如下命令安装最新稳定版本的transformers库:

pip install git+https://github.com/huggingface/transformers
  • 1

安装数据集、加速器和huggingface_hub:

conda install -c huggingface -c conda-forge datasets
conda install -c conda-forge accelerate
conda install -c conda-forge huggingface_hub
  • 1
  • 2
  • 3

最后,安装 bitsandbytes 和 wandb库:

pip install bitsandbytes
pip install wandb
  • 1
  • 2

要获得带有描述的完整参数列表,你可以在任何脚本上运行以下命令:

python scripts/some_script.py --help
  • 1

在运行任何脚本之前,请确保你已登录并且可以推送到hub:

huggingface-cli login
  • 1

确保你已登录 wandb:

wandb login
  • 1

现在一切都完成了,你可以克隆存储库并进入相应的目录。

2.1 数据集

StarCoder 可以微调来实现多个下游任务。 我们在这里的兴趣是微调 StarCoder 以使其遵循指令。 指令微调最近引起了很多关注,因为它提出了一个简单的框架,可以教授语言模型使其输出与人类需求保持一致。 该过程需要质量指令数据集的可用性,其中包含多个指令 - 答案对。 不幸的是,这样的数据集并不普遍,但多亏了 Hugging Face

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/374633
推荐阅读
相关标签