导读:
本文介绍了codellama的简介、本地化部署、测试和应用实战方案,帮助学习大语言模型的同学们更好地应用codellama。我们详细讲解了如何将codellama部署到实际应用场景中,并通过实例演示了如何使用codellama进行代码生成和优化。最后,总结了codellama的应用实战经验和注意事项。
(有图有真相):
目录
一、codellama简介
2023年08月25日(北京时间),meta发布了code llama,一个可以使用文本提示生成代码的大型语言模型(llm)。code llama是最先进的公开可用的llm代码任务,并有潜力使工作流程更快,为当前的开发人员和降低进入门槛的人正在学习代码。code llama有潜力作为一种生产力和教育工具来帮助程序员编写更健壮、文档更完善的软件。
code llama在llama 2的基础上增强了编码能力。它可以从代码和自然语言提示(例如,“给我写一个输出斐波那契数列的函数。”)中生成代码和关于代码的自然语言。它也可以用于代码完成和调试。它支持许多当今最流行的语言,包括python、c++、java、php、typescript (javascript)、c#和bash。
code llama有三个尺寸的版本,参数量分别为7b、13b和34b,并支持多种编程语言。它稳定支持了最高10万个token的上下文生成。例如,7b模型适合在单个gpu上运行,而34b模型提供了更好的编码辅助和最佳结果,但速度较慢。对于低延迟任务,比如实时代码补全,较小的7b和13b模型速度更快。
- code llama,代码生成的基础模型;
- code llama-python,单独针对于python的模型;
- code llama-instruct,根据人工指令微调的模型。
https://huggingface.co/spaces/codellama/codellama-13b-chatcode llama7b 在线试用地址: https://huggingface.co/spaces/codellama/codellama-13b-chat
二、codellama 性能分析
在humaneval上评估根据docstrings生成代码的能力,mbpp根据文字描述生成代码。
code llama 34b模型在humaneval达到53.7%,mbpp达到56.2%,接近chatgpt的水平。
三、codellama 功能简介
3.1 代码补全
我们可以使用 7b 和 13b 模型进行文本/代码补全或填充。下述代码演示了如何使用 pipeline
接口来进行文本补全。运行时,只需选择 gpu 即可在 colab 的免费 gpu 上运行。
3.2 代码填充
这是代码模型才能完成的专门任务。该模型经过训练后,可以生成与给定上下文最匹配的代码 (包括注释)。这是代码助理的典型使用场景: 要求它们根据上下文填充当前光标处的代码。
3.3 对话式指令
如上所述,基础模型可用于补全和填充。code llama 还包含一个适用于对话场景的指令微调模型。
四、codellama 部署
4.1基础环境搭建
4.1.1 git安装
打开git官网地址:git进行下载,如下图界面
基本无脑下一步安装,下一步安装就好
4.1.2 conda安装
conda安装较为基础,网上的教程也比较多,这个比较全大家可以看一下:
4.2 推理环境搭建
这俩个深度学习的基础环境,是我们做ai经常需要配置的,内容较多。我在这里推荐几个比较好的博客,自行进行安装配置。我电脑是rtx3060,使用cuda11.6,cudnn版本:8.5.0
4.2.1 cuda环境配置、cudnn环境配置
网上教程很多,实在懒得写了这个写的还行 ,重点是根据自己硬件情况,选择合适的教程。
4.3 核心—环境搭建
4.3.1 创建虚拟环境
4.3.2 torch安装
pytorch 安装地址如下:
pytpytorchan open source machine learning framework that accelerates the path from research prototyping to production deployment.https://pytorch.org/默认识别你系统环境,画重点,确定自己的cuda版本与python版本后装就可以了
如果默认找不到合适你的版本。点击,找到你的部分安装下载。previous pytorch versions | pytorchan open source machine learning framework that accelerates the path from research prototyping to production deployment.https://pytorch.org/get-started/previous-versions/
4.3.3 huggingface安装
transformers的简介
transformers提供了数千个预先训练好的模型来执行不同模式的任务,如文本、视觉和音频。这些模型可应用于:
>> 文本:用于文本分类、信息提取、问题回答、摘要、翻译、文本生成等任务,支持100多种语言。
>> 图像:用于图像分类、对象检测和分割等任务。
>> 音频:用于语音识别和音频分类等任务。
transformer模型还可以在几种组合模式上执行任务,例如表格问题回答、光学字符识别、从扫描文档中提取信息、视频分类和视觉问题回答。
transformer提供了api,可以快速下载并在给定文本上使用这些预训练的模型,在您自己的数据集上对它们进行微调,然后在我们的模型中心上与社区共享。同时,每个定义架构的python模块都是完全独立的,可以进行修改以进行快速研究实验。
transformer由三个最流行的深度学习库——jax、pytorch和tensorflow——支持,并在它们之间无缝集成。在加载模型进行推理之前,先用一个模型训练它们是很简单的。您可以从模型中心直接在它们的页面上测试我们的大多数模型。我们还提供私有模型托管、版本控制和公共和私有模型的推理api。
安装方式地址:
git 源码安装:
pip 或 conda安装
4.3.4 大模型本地下载
因网络限制原因,如果我们直接执行下载,基本等不到下载成功。
我们需要把下面资源都本地化下载吗,并且放到固定目录下
下载太慢了,后续更新百度云下载地址与csdn下载地址:
4.3.5 执行脚本
import time
from transformers import autotokenizer, automodel
import transformers
import torch
modelname = r"f:\ai\nlp\codellama\codellama-7b-hf"
tokenizer = autotokenizer.from_pretrained(modelname)
t1 = time.time()
pipeline = transformers.pipeline(
"text-generation",
model=modelname,
torch_dtype=torch.float16,
device_map="auto",
)
sequences = pipeline(
'用python解决汉诺塔问题',
do_sample=true,
top_k=10,
temperature=0.1,
top_p=0.95,
num_return_sequences=1,
eos_token_id=tokenizer.eos_token_id,
max_length=500,
)
for seq in sequences:
print(f"result: {seq['generated_text']}")
t2 = time.time()
print(
f"time cost: {t2-t1} s"
)
五、效果展示
rtx3060 等待时间 18分钟左右
t4 同一个问题 等待时间5分钟左右
发表评论