首页 > 编程语言 >使用 StarCoder 创建一个编程助手

使用 StarCoder 创建一个编程助手

时间:2023-05-24 23:11:55浏览次数:44  
标签:string assistant 模型 编程 token StarCoder 助手 Assistant

如果你是一个软件开发者,你可能已经使用过 ChatGPT 或 GitHub 的 Copilot 去解决一些写代码过程中遇到的问题,比如将代码从一种语言翻译到另一种语言,或者通过自然语言,诸如“写一个计算斐波那契数列第 N 个元素的 Python 程序”,来自动生成代码。尽管这些专有系统功能强大,但它们仍然有很多不足,比如对训练所使用的公共数据透明度的缺失、没有能力去让它们适配自己的使用领域或代码库。

幸运的是,现在我们有了很多高质量开源替代品!包括 SalesForce 为 Python 语言开发的 CodeGen Mono 16B,以及 Replit 开发的、在 20 种编程语言上训练过的 一个 3B 参数量的模型

而最近新出现的一个选择则是 BigCode 开发的 StarCoder,这是一个在一万亿的 token、80 多种编程语言上训练过的 16B 参数量的模型。训练数据多来自 GitHub 上的 issues、使用 Git 提交的代码、Jupyter Notebook 等等 (相关使用都已经过许可)。得益于对企业友好的许可证、长度为 8192 的 token、借助 multi-query attention 的快速大批量推理,StarCoder 可以说是当前对代码相关的应用最合适的开源选择。

本文将介绍如何对 StarCoder 进行微调,进而创建一个可以聊天的个人编程助手。这个编程助手我们将称之为 StarChat。借助 StarChat 的开发过程,我们将探索以下几个使用大语言模型 (LLM) 创建编程助手时可能遇到的几个技术细节:

  • 我们应该怎样对大语言模型进行提词,使得它成为一个对话代理
  • 我们也将介绍 OpenAI 的 Chat Markup Language (简称 ChatML),它为人类用户和 AI 助手之间的对话信息传递提供了一种结构化的格式
  • 怎样在一个多样性很强的语料库上,使用

    标签:string,assistant,模型,编程,token,StarCoder,助手,Assistant
    From: https://www.cnblogs.com/huggingface/p/17429825.html

相关文章

  • R语言中的Stan概率编程MCMC采样的贝叶斯模型|附代码数据
    原文链接:http://tecdat.cn/?p=11161最近我们被客户要求撰写关于贝叶斯模型的研究报告,包括一些图形和统计输出。概率编程使我们能够实现统计模型,而不必担心技术细节。这对于基于MCMC采样的贝叶斯模型特别有用R语言中RStan贝叶斯层次模型分析示例stan简介Stan是用于贝叶斯推理......
  • 打卡 c语言趣味编程 列出真分数序列
    问题描述:按递增顺序依次列出所有分母为40,分子小于40的最简分数。分子、分母只有公因数1的分数叫做最简分数或者说分子和分母是互质数的分数,叫做最简分数,又称既约分数,如2/3,8/9,3/8等。思路:求分子小于40的最简分数,对分子采用穷举的方法。根据最简分数定义知:分子分母的......
  • 2023.5.24编程一小时打卡
    一、问题描述:已知Horse类是Pegasus类的父类,根据以下主函数完善程序内容,以实现规定的输出。不允许改变主函数的内容。intmain(){Horse*p1=newHorse;//输出:Horse申请了空间...Horse*p2=newPegasus;/*输出两行:Horse申......
  • 实验4 函数与异常处理编程
    print(sum)sum=42print(sum)definc(n):sum=n+1print(sum)returnsumsum=inc(7)+inc(7)print(sum)四处sum作用域不同。第一个是内置函数名称,第二个是赋值名称,第三个是局部变量,第四个是全局变量list1=[1,9,8,4]print(sorted(list1))print......
  • Linux网络编程中的惊群问题
    1.什么是惊群问题​ 如今网络编程中经常用到多进程或多线程模型,大概的思路是父进程创建socket,bind、listen后,通过fork创建多个子进程,每个子进程继承了父进程的socket,调用accpet开始监听等待网络连接。这个时候有多个进程同时等待网络的连接事件,当这个事件发生时,这些进程被同时......
  • 记录一下SOCKET编程
    记录一下基本的socket编程首先贴几段代码centos下的server代码#include<bits/stdc++.h>#include<unistd.h>#include<arpa/inet.h>#include<sys/socket.h>usingnamespacestd;intmain(){intserver,client;structsockaddr_inserverAddr,clientAddr......
  • 编程打卡:面向对象程序设计
    importjava.util.*;publicclassStaffManagementSystem{privatestaticList<Staff>staffList=newArrayList<>();publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);while(true){......
  • 【编程日记】搭建python开发环境
    0.相关确定0.1确定操作系统Python是一种跨平台的编程语言,这意味着它能够运行在所有主要的操作系统中。然而,在不同的操作系统(Windows/Mac/Linux)中,安装Python的方法存在细微的差别。本教程我们使用的是Windows系统,对于Mac和Linux暂时不做介绍0.2确定Python版本当前有两个不同的......
  • Ruby教程_编程入门自学教程_菜鸟教程-免费教程分享
    教程简介Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言,在20世纪90年代由日本人松本行弘(YukihiroMatsumoto)开发,遵守GPL协议和RubyLicense。它的灵感与特性来自于Perl、Smalltalk、Eiffel、Ada以及Lisp语言。由Ruby语言本身还发展出了JRuby(Java平台)、IronRuby(.NET......
  • 编程感悟 —— 底层知识与实际运用的结合
    对于编程的理解往往是对底层原理和进阶知识的融合。例如Map和List在SpringBoot框架下进行业务操作时,其底层的存储和实现往往会用到这些基础知识,甚至包括了线程池和内存原理。这就是编程思想中的一部分最底层的极具魅力的过程!......