StarCoder2本地部署上手体验:程序猿要下岗了吗?

news2024/9/24 15:21:56

StarCoder2简介

ServiceNow、Hugging Face 和 NVIDIA 于2月28日宣布发布 StarCoder2,这是一个用于代码生成的开放式大型语言模型系列,为性能、透明度和成本效益设定了新标准。StarCoder2 是与 BigCode 社区合作开发的,由ServiceNow和 Hugging Face管理。

StarCoder2 经过 619 种编程语言的培训,可以进一步培训并嵌入到企业应用程序中,以执行专门的任务,例如应用程序源代码生成、工作流生成、文本摘要等。开发人员可以使用其代码补全、高级代码摘要、代码片段检索和其他功能来加速创新并提高生产力。

StarCoder2 提供三种模型大小:由 ServiceNow 训练的 30 亿参数模型;Hugging Face 训练的 70 亿参数模型;一个由 NVIDIA 与NVIDIA NeMo构建并在 NVIDIA 加速基础设施上进行训练的 150 亿参数模型。较小的变体提供了强大的性能,同时节省了计算成本,因为更少的参数在推理过程中需要更少的计算。事实上,新的 30 亿参数模型与原始 StarCoder 150 亿参数模型的性能相匹配。

ServiceNow StarCoder2 开发团队负责人兼 BigCode 联合负责人 Harm de Vries 强调说:“StarCoder2 证明了开放科学合作和负责任的人工智能实践与道德数据供应链的综合力量。” “最先进的开放访问模型改进了之前的生成式人工智能性能,以提高开发人员的工作效率,并为开发人员提供平等的机会享受代码生成人工智能的好处,这反过来又使任何规模的组织能够更轻松地满足他们的全部需求。商业潜力。”

“在 Hugging Face、ServiceNow 和 NVIDIA 的共同努力下,我们能够发布强大的基础模型,使社区能够在数据和训练完全透明的情况下更高效地构建各种应用程序。” Hugging Face 和 BigCode 联合领导。“随着我们努力实现负责任的人工智能民主化,StarCoder2 证明了开源和开放科学的潜力。” 

NVIDIA 应用研究副总裁 Jonathan Cohen 表示:“由于每个软件生态系统都有专有的编程语言,因此LLM可以推动每个行业在效率和创新方面取得突破。” “NVIDIA 与 ServiceNow 和 Hugging Face 的合作引入了安全、负责任地开发的模型,并支持更广泛地使用负责任的生成式 AI,我们相信这将使全球社区受益。”

StarCoder2模型增强定制应用程序开发

StarCoder2 模型共享最先进的架构和来自 BigCode 的精心策划的数据源,优先考虑透明度和开放治理,以实现大规模负责任的创新。  

StarCoder2 提升了未来人工智能驱动编码应用的潜力,包括文本到代码和文本到工作流功能。通过更广泛、更深入的编程培训,它提供存储库上下文,从而实现准确的、上下文感知的预测。这些进步为经验丰富的软件工程师和公民开发人员提供服务,加速商业价值和数字化转型。 

StarCoder2 的基础是一个名为The Stack v2 的新代码数据集,它比 Stack v1 大 7 倍多。除了高级数据集之外,新的训练技术还可以帮助模型理解低资源编程语言(例如 COBOL)、数学和程序源代码讨论。

StarCoder2利用特定于业务的数据进行微调以提高功能

用户可以使用 NVIDIA NeMo 或Hugging Face TRL等开源工具,根据行业或组织特定的数据对开放式 StarCoder2 模型进行微调。他们可以创建高级聊天机器人来处理更复杂的摘要或分类任务,开发个性化的编码助手,可以快速轻松地完成编程任务,检索相关代码片段,并启用文本到工作流功能。 

组织已经开始微调 StarCoder 基础模型,为其业务创建专门的任务特定功能。 

ServiceNow 的text-to-code Now LLM 专门构建在具有 150 亿参数的 StarCoder LLM 的专用版本上,并针对其工作流程模式、用例和流程进行了微调和培训。Hugging Face 还使用该模型创建了 StarChat 助手。

BigCode 促进人工智能领域的开放科学合作

BigCode 代表了由 Hugging Face 和 ServiceNow 领导的开放式科学合作,致力于负责任的LLM开发。BigCode 社区通过工作组和工作组积极参与 StarCoder2 项目的技术方面,利用 ServiceNow 的 Fast LLM 框架训练 30 亿参数模型、Hugging Face 的 nanotron 框架训练 70 亿参数模型以及 NVIDIA NeMo 云原生框架和NVIDIA TensorRT-LLM软件用于训练和优化 150 亿参数模型。 

StarCoder2 与其前身一样,将在 BigCode Open RAIL-M 许可证下提供,允许免版税访问和使用。为了进一步促进透明度和协作,该模型的支持代码将继续驻留在 BigCode 项目的 GitHub 页面上。

所有 StarCoder2 模型也可从 Hugging Face 下载,并且 StarCoder2 150 亿参数模型可在NVIDIA AI Foundation 模型上使用,供开发人员直接从浏览器或通过 API 端点进行试验。

StarCoder2本地部署上手体验

我上手使用的平台配置是英特尔12代i7 12700K CPU+NVIDIA RTX-4090,24G显存,操作系统为Ubuntu 22.04。

首先要安装并升级到最新开发版本的transformer:

pip install transformers --upgrade
pip install git+https://github.com/huggingface/transformers.git

如果torch和tensorflow没有安装的话则执行如下命令安装:

pip install torch torchvision torchaudio 
pip install tensorflow

运行python3进入python shell:

python3

接下来在python shell里执行如下的指令来加载和使用StarCoder2。因为显卡能力的原因我们这里只尝试了starcoder2-3b的模型。加载7b和15b的模型的时候会出现显卡内存不足的问题。

>>> from transformers import AutoModelForCausalLM, AutoTokenizer 
>>> checkpoint = "bigcode/starcoder2-3b" 
>>> device = "cuda" 
>>> tokenizer = AutoTokenizer.from_pretrained(checkpoint) 
>>> model = AutoModelForCausalLM.from_pretrained(checkpoint).to(device) 
>>> inputs = tokenizer.encode("input your desired prompt for code generation", max_length=512, return_tensors="pt").to(device) 
>>> outputs = model.generate(inputs, max_length=2048) 
>>> print(tokenizer.decode(outputs[0]))

在上述的prompt中,我们使用了如下的输入让StarCoder2分别生成python, shell和C++代码:

  • create a python script to search all.txt files in the current directory and replace hello with good-bye in each file
  • create a shell script to search all.txt files in the current directory and replace hello with good-bye in each file
  • create C++ code to search all.txt files in the current directory and replace hello with good-bye in each file

让我们来看看StarCoder2的表现吧。

Python脚本

create a python script to search all.txt files in the current directory and replace hello with good-bye in each file.

# +
import os

def replace_hello(file_name):
    with open(file_name, 'r') as f:
        lines = f.readlines()
    with open(file_name, 'w') as f:
        for line in lines:
            f.write(line.replace('hello', 'good-bye'))

for file_name in os.listdir('.'):
    if file_name.endswith('.txt'):
        replace_hello(file_name)
# -

Shell脚本

create a shell script to search all.txt files in the current directory and replace hello with good-bye in each file.

```
#!/bin/bash

for file in *.txt
do
    sed -i's/hello/good-bye/g' $file
done

```

C++代码

create C++ code to search all.txt files in the current directory and replace hello with good-bye in each file.

#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>

using namespace std;

int main()
{
        string line;
        ifstream file("all.txt");
        ofstream newfile("new.txt");
        if (file.is_open())
        {
                while (getline(file, line))
                {
                        newfile << line.replace(line.find("hello"), 5, "good-bye") << endl;
                }
                file.close();
                newfile.close();
        }
        else cout << "Unable to open file";
        return 0;
}

StarCode2本地部署演示视频

StarCode2上手体验

作者个人Blog地址:StarCoder2本地部署上手体验:程序猿要下岗了吗? - HY's Blog

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1483506.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

labview数组精讲

题主经过写文章一段时间的发现,许多同学对该软件的理解和编程能力是不太一样的,有些知识相对一些同学较为简单,但是有些同学提问就比较困难。那么针对这个问题,题主打算出一期说白话系列的专栏,在该栏目中用最通俗的大白话和例子去让大家深刻了解这个软件的功能和摸透他的…

Py2neo查询neo4j周杰伦数据库中的节点、关系和路径教程

文章目录 py2neo介绍连接Neo4j数据库py2neo查询图数据库neo4j数据概览使用NodeMatcher查询节点使用RelationshipMatcher查询关系 通过执行Cypher语句查询 py2neo介绍 Neo4j是一款开源图数据库&#xff0c;Py2neo提供了使用Python语言访问Neo4j的接口。本文介绍了使用Py2neo的N…

钉钉机器人发送折线图卡片 工具类代码

钉钉机器人 “创建并投放卡片 接口 ” 可以 发送折线图、柱状图 官方文档&#xff1a;创建并投放卡片 - 钉钉开放平台 0依赖、1模板、2机器人放到内部应用、3放开这个权限 、4工具类、5调用工具类 拼接入参 卡片模板 自己看文档创建&#xff0c;卡片模板的id 有用 0、依赖…

vue2 设置keepAlive之后怎么刷新页面数据

场景&#xff1a;移动端有 A、B、C 三个页面&#xff0c;A、B 页面路由设置了keepAlive属性&#xff0c;有下面两个场景&#xff1a; 1、A 页面 --> B 页面&#xff0c;B 页面刷新。 2、C 页面 --> B页面&#xff0c;B 页面不刷新。 一、分为以下两个情况讨论&#xf…

Linux安装Nginx配置Keepalived高可用

Vmwaire 安装 Linux 解决启动没有IP地址问题 cd /etc/sysconfig/network-scripts vi ifcfg-ens33# 重启linux reboot # 再次查看ip ip addrLinux 镜像地址下载 ps: 发现阿里有一个工具箱&#xff0c;里面有各种镜像 阿里镜像地址 https://developer.aliyun.com/mirror/ 安装…

计算机设计大赛 深度学习图像修复算法 - opencv python 机器视觉

文章目录 0 前言2 什么是图像内容填充修复3 原理分析3.1 第一步&#xff1a;将图像理解为一个概率分布的样本3.2 补全图像 3.3 快速生成假图像3.4 生成对抗网络(Generative Adversarial Net, GAN) 的架构3.5 使用G(z)生成伪图像 4 在Tensorflow上构建DCGANs最后 0 前言 &#…

windows安装部署node.js以及搭建运行第一个Vue项目

一、官网下载安装包 官网地址&#xff1a;https://nodejs.org/zh-cn/download/ 二、安装程序 1、安装过程 如果有C/C编程的需求&#xff0c;勾选一下下图所示的部分&#xff0c;没有的话除了选择一下node.js安装路径&#xff0c;直接一路next 2、测试安装是否成功 【winR】…

cv_bridge连接自定义版本的opencv

在ros noetic版本中&#xff0c;默认的cv_bridge依赖的opencv版本为4.2.0&#xff0c;若要升级opencv版本&#xff0c;则无法使用cv_bridge&#xff0c;所以需要重新自编译cv_bridge。 一. 编译cv_bridge 1.通过网站 https://github.com/ros-perception/vision_opencv/tree/n…

MYSQL的优化学习,从原理到索引,在到事务和锁机制,最后的主从复制、读写分离和分库分表

mysql的优化学习 为什么选择Mysql不选择其他的数据库&#xff1f;还有哪些&#xff0c;有什么区别&#xff1f; Mysql&#xff1a;开源免费版本可用&#xff0c;适用于中小型应用 Oracle&#xff1a;适用于大型企业级应用&#xff0c;复杂的业务场景和大量数据的处理&#xf…

Acwing 每日一题 空调 差分 贪心

&#x1f468;‍&#x1f3eb; 空调 &#x1f468;‍&#x1f3eb; 参考题解 import java.util.Scanner;public class Main {static int N (int) 1e5 10;static int[] a new int[N];static int n;public static void main(String[] args){Scanner sc new Scanner(System.…

智能家居控制系统(51单片机)

smart_home_control_system 51单片机课设&#xff0c;智能家居控制系统 使用及转载请标明出处&#xff08;最好点个赞及star哈哈&#xff09; Github地址&#xff0c;带有PPT及流程图 Gitee码云地址&#xff0c;带有PPT及流程图 ​ 以STC89C52为主控芯片&#xff0c;以矩阵键…

【OpenCV C++】Mat img.total() 和img.cols * img.rows 意思一样吗?二者完全相等吗?

文章目录 1 结论及区别2 Mat img的属性 介绍1 结论及区别 在大多数情况下,img.total() 和 img.cols * img.rows 是相等的,但并不总是完全相等的。下面是它们的含义和一些区别: 1.img.total() 表示图像中像素的总数,即图像的总像素数量。2.img.cols * img.rows 也表示图像中…

C++学习笔记:二叉搜索树

二叉搜索树 什么是二叉搜索树?搜索二叉树的操作查找插入删除 二叉搜索树的应用二叉搜索树的代码实现K模型:KV模型 二叉搜索树的性能怎么样? 什么是二叉搜索树? 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是具有以下性质的二叉树: 若它的左子树…

【go语言开发】swagger安装和使用

本文主要介绍go-swagger的安装和使用&#xff0c;首先介绍如何安装swagger&#xff0c;测试是否成功&#xff1b;然后列出常用的注释和给出使用例子&#xff1b;最后生成接口文档&#xff0c;并在浏览器上测试 文章目录 安装注释说明常用注释参考例子 文档生成格式化文档生成do…

代码随想录算法训练营第二十八天|93.复原IP地址 、78.子集、90.子集II

文章目录 [1.复原 IP 地址](https://leetcode.cn/problems/restore-ip-addresses/description/)2.子集[3.子集 II](https://leetcode.cn/problems/subsets-ii/) 1.复原 IP 地址 切割问题可以使用回溯&#xff0c;本题分别两步&#xff0c;切割字符串和判断IP 切割逻辑如下&…

微信小程序 --- 分包加载

分包加载 1. 什么是分包加载 什么是分包加载 ❓ 小程序的代码通常是由许多页面、组件以及资源等组成&#xff0c;随着小程序功能的增加&#xff0c;代码量也会逐渐增加&#xff0c;体积过大就会导致用户打开速度变慢&#xff0c;影响用户的使用体验。 分包加载是一种小程序…

MATLAB图像噪声添加与滤波

在 MATLAB 中添加图像噪声和进行滤波通常使用以下函数&#xff1a; 添加噪声&#xff1a;可以使用imnoise函数向图像添加各种类型的噪声&#xff0c;如高斯噪声、椒盐噪声等。 滤波&#xff1a;可以使用各种滤波器对图像进行滤波处理&#xff0c;例如中值滤波、高斯滤波等。 …

(三)电机控制之方波驱动无刷直流电机(BLDC)与正弦波驱动无刷直流电机(PMSM)的详细对比

电流控制方式和波形&#xff1a; 方波驱动&#xff1a;在每个换相周期内&#xff0c;定子绕组中的电流被切换为高或低两个状态&#xff0c;形成矩形波。通常采用六步换向法&#xff0c;即每60度电角度换相一次&#xff0c;从而产生转矩。正弦波驱动&#xff1a;定子绕组中流过的…

Doris实战——拈花云科的数据中台实践

前言 拈花云科 NearFar X Lab 团队调研并引进 Doris 作为新架构下的数据仓库选型方案。本文主要介绍了拈花云科数据中台架构从 1.0 到 2.0 的演变过程&#xff0c;以及 Doris 在交付型项目和 SaaS 产品中的应用实践。 一、业务背景 拈花云科的服务对象主要是国内各个景区、景点…

安卓虚拟机ART和Dalvik

目录 一、JVM和Dalvik1.1 基于栈的虚拟机字节码指令执行过程 1.2 基于寄存器的虚拟机 二、ART与Dalvikdex2aotAndroid N的运作方式 三、总结 一、JVM和Dalvik Android应用程序运行在Dalvik/ART虚拟机&#xff0c;并且每一个应用程序对应有一个单独的Dalvik虚拟机实例。 Dalvik…