CodeFuse-MFTCoder 提升 CodeGeeX2-6B 代码能力

fuse初使用-eins fuse的github及介绍 fuse-github fuse-wiki-zh meson;ninja wget + tar 得到fuse源代码(我下载的是3.10.5),发现没有自己熟悉的configure、makefile,傻眼了 一度以为自己下载的压缩包有问题,是不是贡献者忘了??(无比自信的我) 对比了几版之后,我发现meson.build这个小东西 meson 提供一种支持并行的编译环境,把他当成makefile的替代品就可以了;至于ninja,在这里是meson的默认后端 。 可惜的是,我 阅读详情

CodeFuse-MFTCoder 项目地址:
GitHub - codefuse-ai/MFTCoder: High Accuracy and efficiency multi-task fine-tuning framework for Code LLMs

CodeFuse-Codegeex2-6B 模型地址:
https://modelscope.cn/models/codefuse-ai/CodeFuse-CodeGeeX2-6B https://huggingface.co/codefuse-ai/CodeFuse-CodeGeeX2-6B
 

一、CodeGeeX2-6B底座代码能力总览

CodeGeeX2-6B 是由智普AI开源的代码大模型。它是在自然语言大模型ChatGLM2-6B的基础上,将GLM中双向attention的部分变成单向以后(该结论由笔者分析CodeGeeX2-6B GitHub issue讨论得出),加入大量代码相关数据进行了Causal Language Model的加训,最终获取的代码大模型。

相比于上一个版本的CodeGeeX-13B,尽管模型变小了,但在多项指标上取得了性能的提升。相比于之前开源界最好的代码大模型Starcoder-15B,也有10%的性能提升。详细的HumanEval-X数据集中五种语言的评测结果如下(摘自官方github repo):

Model

Python

C++

Java

JavaScript

Go

Overall

CodeGen-16B-multi

19.2

18.1

15.0

18.4

13.0

CodeGeeX-13B

22.9

17.1

20.0

17.6

14.4

Replit-code-v1-3B

22.0

20.1

20.1

20.1

12.2

CodeGen2.5-7B-multi

30.6

24.3

29.0

27.5

18.9

StarCoder-15B

35.5

28.2

31.5

33.2

21.3

CodeGeeX2-6B

35.9

29.3

30.8

32.2

22.5


CodeGeeX2的成功,反应出在自然语言大模型底座上,进一步加训代码,也许比起从零开始训练一个代码模型,能够取得更好的结果。毕竟从课程学习(Curriculum Learning)的角度,学好中英文,再学习代码,会更加简单且能够学得更好。在CodeGeeX2之后,CodeLLama也用类似的思路,再一次刷新了开源模型在HumanEvalX榜单上的成绩。
 

二、CodeFuse-MFTCoder 多任务微调CodeGeeX2-6B

借助CodeFuse-MFTCoder的多任务微调能力,我们可以使用多个代码任务数据集对CodeGeex2-6B进行多任务微调(MFT)。由于CodeGeex2已经适合单向的Causal Language Model的模式,因此训练采用和GPT模型一样的微调形式。在任务选择上,我们精选了3个核心代码任务数据,即代码补全(Code Completion),代码生成(Text2Code), 单测生成(Unittest Generation)一共60w条指令问答数据。该数据组合包含代码生成的三个基础任务,用基础任务微调对齐过的模型,在各类未训练过的代码任务上也有不错的泛化能力。

由于CodeGeex2-6B参数量不大,训练采用MFTCoder的多任务LoRA微调模式而不是QLoRA,且代码任务属于相对复杂任务,我们对更多的模块进行微调,包括Attention和MLP,相应的配置如下:

对以上数据进行了约2个Epoch的训练到收敛。训练过程loss情况如下图所示:


通过多任务微调,CodeFuse-CodeGeex2-6B的各方面代码能力均有比较大的提升。
 

三、CodeFuse-CodeGeeX2-6B模型效果

接下来看一些CodeGeeX2-6B-MFT微调后的模型的生成效果。在代码补全/代码生成/代码修复/SQL生成/单元测试生成等代码任务上有较好表现,更丰富的生成样例,请看下面详细展示。
MFT后的CodeGeex2-6b有更好的代码生成能力。在五种编程语言的代码补全测试集HumanEval-x上进行了相关评测(见表2),测试结果显示与CodeGen-16B、CodeGeeX-13B、StarCoder-15B等模型相比,微调后的CodeFuse-CodeGeex2-6B在Java/Python/Cpp/JavaScript均是Top1,相对于底座平均提升8%+,在HumanEval-Python和HumanEval-Java上pass@1均能达到45%+,在同系列的6B代码大模型上表现突出。

表2:CodeFuse-CodeGeex2-6B和其他模型代码补全能力对比

Model

Python

C++

Java

JavaScript

Go

Overall

CodeFuse-CodeGeeX2-6B

45.12

37.2

45.73

37.2

28.05

38.7

CodeGen-16B-multi

19.2

18.1

15.0

18.4

13.0

16.7

CodeGeeX-13B

22.9

17.1

20.0

17.6

14.4

18.4

Replit-code-v1-3B

22.0

20.1

20.1

20.1

12.2

18.9

CodeGen2.5-7B-multi

30.6

24.3

29.0

27.5

18.9

26.1

StarCoder-15B

35.5

28.2

31.5

33.2

21.3

29.9

CodeGeeX2-6B

35.9

29.3

30.8

32.2

22.5

30.1


代码生成(Code Completion / Text2Code)

以下是多语言代码补全 & Text2Code任务上的具体样例:
代码补全(Code Completion )

Python

Question:

from typing import List, Tuple def rolling_max(numbers: List[int]) -> List[int]: 
    """ From a given list of integers, generate a list of rolling maximum element 
    found until given moment in the sequence. 
    >>> rolling_max([1, 2, 3, 2, 3, 4, 2]) [1, 2, 3, 3, 3, 4, 4] """

Answer:

    max_numbers = [] 
    for i in range(len(numbers)): 
        if i == 0: 
            max_numbers.append(numbers[i]) 
        else: 
            max_numbers.append(max(numbers[i], max_numbers[i-1])) 
    return max_numbers 

Question:

    from typing import List 
def parse_music(music_string: str) -> List[int]: 
    """ Input to this function is a string representing musical notes in a special ASCII format. Your task is to parse this string and return list of integers corresponding to how many beats does each not last. Here is a legend: 'o' - whole note, lasts four beats 'o|' - half note, lasts two beats '.|' - quater note, lasts one beat >>> parse_music('o o| .| o| o| .| .| .| .| o o') [4, 2, 1, 2, 2, 1, 1, 1, 1, 4, 4] """ 

Answer:

    notes = music_string.split() 
    parsed_notes = [] 
    for note in notes: 
        if note == 'o': 
            parsed_notes.append(4) 
        elif note == 'o|': 
            parsed_notes.append(2) 
        elif note == '.|': 
            parsed_notes.append(1) 
    return parsed_notes 

C++

Question:

/* Input are two strings a and b consisting only of 1s and 0s. Perform binary XOR on these inputs and return result also as a string. >>> string_xor("010", "110") "100" */ 
#include<stdio.h> #include<string> using namespace std; 
string string_xor(string a,string b){ 

Answer:

int n = a.size(); 
string c = ""; 
for(int i=0;i<n;i++){ 
    if(a[i]==b[i]){ 
        c+='0'; 
    } 
    else{ 
        c+='1'; 
    } 
} 
return c; 
} 

Question:

/* Given a string 'text", return its md5 hash equivalent string. If 'text" is an empty string, return None. >>> string_to_md5("Hello world") == "3e25960a79dbc69b674cd4ec67a72c62" */ 
#include<stdio.h> #include<string> 
#include<openssl/md5.h> 
using namespace std; 
string string_to_md5(string text){ 

Answer:

if(text.empty()){ 
    return "None"; 
} 
MD5_CTX md5; 
MD5_Init(&md5);
MD5_Update(&md5, text.c_str(), text.length());
unsigned char md5_hash[MD5_DIGEST_LENGTH]; MD5_Final(md5_hash, &md5); 
char md5_hash_str[MD5_DIGEST_LENGTH*2+1]; 
for(int i=0; i<MD5_DIGEST_LENGTH; i++){
    sprintf(md5_hash_str+i*2, "%02x", md5_hash[i]); 
} 
return md5_hash_str; 
}

Java

Question:

import java.util.*; 
import java.lang.*; 
class Solution { /** From a given list of integers, generate a list of rolling maximum element found until given moment in the sequence. >>> rollingMax(Arrays.asList(1, 2, 3, 2, 3, 4, 2)) [1, 2, 3, 3, 3, 4, 4] */ 
    public List<Integer> rollingMax(List<Integer> numbers) { 

Answer:

    List<Integer> result = new ArrayList<>(); 
    int max = Integer.MIN_VALUE; 
    for (int i = 0; i < numbers.size(); i++) { 
        if (numbers.get(i) > max) { 
            max = numbers.get(i); 
        } 
        result.add(max); 
    } 
    return result; } 
} 

Question:

import java.util.*; 
import java.lang.*; 
class Solution { 
    /** Given a string, find out how many distinct characters (regardless of case) does it consist of >>> countDistinctCharacters("xyzXYZ") 3 >>> countDistinctCharacters("Jerry") 4 */ 
    public int countDistinctCharacters(String string) { 

Answer:

    Set<Character> distinctChars = new HashSet<>(); 
    for (char c : string.toCharArray()) { 
        distinctChars.add(Character.toUpperCase(c)); 
    } 
    return distinctChars.size(); } 
} 

JavaScript

Question:

/* For a given list of integers, return a tuple consisting of a sum and a product of all the integers in a list. Empty sum should be equal to 0 and empty product should be equal to 1. >>> sumProduct([]) (0, 1) >>> sumProduct([1, 2, 3, 4]) (10, 24) */ 
const sumProduct = (numbers, int) => { 
  

Answer:

let sum = 0; 
  let product = 1; 
  for (let i = 0; i < numbers.length; i++) { 
    sum += numbers[i]; product *= numbers[i]; 
  } 
  return [sum, product]; 
}

Question:

/*Given a list of positive integers x. return a sorted list of all elements that hasn't any even digit. Note: Returned list should be sorted in increasing order. For example: >>> uniqueDigits([15, 33, 1422, 1]) [1, 15, 33] >>> uniqueDigits([152, 323, 1422, 10]) [] */ 
const uniqueDigits = (x) => { 

Answer:

let result = []; 
for (let i = 0; i < x.length; i++) { 
  let str = x[i].toString(); 
  let isEven = false; 
  for (let j = 0; j < str.length; j++) { 
    if (Number(str[j]) % 2 === 0) { 
      isEven = true; break; } 
  } 
  if (!isEven) { 
    result.push(x[i]); } 
} 
return result.sort((a, b) => a - b); 
}; 

Go

Question:

import ( "fmt" ) 
// Input are two strings a and b consisting only of 1s and 0s. // Perform binary XOR on these inputs and return result also as a string. // >>> StringXor('010', '110') // '100' func StringXor(a string, b string) string { 

Answer:

result := "" 
for i := 0; i < len(a); i++ { 
     if a[i] != b[i] { 
         result += "1" 
     } 
     else { 
         result += "0" } 
 } 
return result 
} 

Question:

import ( "crypto/md5" "fmt" ) 
// Given a string 'text', return its md5 hash equivalent string. // If 'text' is an empty string, return nil. // 
// >>> StringToMd5('Hello world') == '3e25960a79dbc69b674cd4ec67a72c62' func StringToMd5(text string) interface{} { 

Answer:

 if text == "" { 
     return nil 
 } 
hash := md5.Sum([]byte(text)) 
return fmt.Sprintf("%x", hash) 
}

Text2Code 测试

摘录一些Python测试cases,模型不论在中文还是英文生成代码指令表现都比较优秀,摘录部分cases如下

Python-中文

Question:

"编写一个python函数,统计A出现的个数"

Answer:

def count_A(s):
    return s.count('A')

Python-英文

Question:

"Write a python function to remove first and last occurrence of a given character from the string."

Answer:

def remove_Occ(s, c): if c in s: return s.replace(c, '') else: return s 

You can test this function with the following code

assert remove_Occ("hello","l") == "heo" assert remove_Occ("abcda","a") == "bcd" assert remove_Occ("PHP","P") == "H"

In the first test, "l" is the first and last character in "hello", so the function removes "l" and returns "heo". In the second test, "a" is not the first or last character in "abcda", so the function returns "abcda". In the third test, "P" is the first and last character in "PHP", so the function removes "P" and returns "H".

单元测试生成(Unittest Generation)

模型可以根据prompt生成函数对应的测试单元,以下是生成单元测试的例子,这些单测是经过人工验证通过的cases:

Python单元测试生成

Question:

为以下Python代码生成单元测试
def words_in_sentence(sentence):
    new_lst = []
    for word in sentence.split():
        flg = 0
        if len(word) == 1:
            flg = 1
        for i in range(2, len(word)):
            if len(word)%i == 0:
                flg = 1
        if flg == 0 or len(word) == 2:
            new_lst.append(word)
    return " ".join(new_lst)

Answer:

import unittest

class TestWordsInSentence(unittest.TestCase):
    
    def test_empty_sentence(self):
        # 测试空句子
        sentence = ""
        expected_output = ""
        self.assertEqual(words_in_sentence(sentence), expected_output)
    
    def test_single_word(self):
        # 测试只有一个单词的句子
        sentence = "hello"
        expected_output = "hello"
        self.assertEqual(words_in_sentence(sentence), expected_output)
    
    def test_multiple_words(self):
        # 测试多个单词的句子
        sentence = "hello world"
        expected_output = "hello world"
        self.assertEqual(words_in_sentence(sentence), expected_output)

Question:

为以下Python代码生成单元测试
def pairs_sum_to_zero(l):
    for i, l1 in enumerate(l):
        for j in range(i + 1, len(l)):
            if l1 + l[j] == 0:
                return True
    return False

Answer:

import unittest

class TestPairsSumToZero(unittest.TestCase):
    def test_empty_list(self):
        # 测试空列表
        self.assertFalse(pairs_sum_to_zero([]))

    def test_one_element_list(self):
        # 测试只有一个元素的列表
        self.assertFalse(pairs_sum_to_zero([1]))

    def test_pairs_sum_to_zero(self):
        # 测试列表中有两个元素,使得和为0
        self.assertTrue(pairs_sum_to_zero([1, -1]))

代码修复(Excpetion Retry)

除了上述代码补全/代码翻译等代码生成任务之外,微调后的MFT模型在代码修复上表现也相当优秀,而且需要注意的是模型本身没有用代码修复相关的训练数据。为了评测模型在代码修复上的结果,在写代码期间,遇到了jsonl编码问题导致写入json文件出错,由此尝试了codegeex2-6b微调模型的代码修复能力,确实结果惊人,模型的回答解决了编码出错问题,以下cases来自真实经历,具体cases展示如下:

Question:

"写入jsonl文件时,出现下述错误 UnicodeEncodeError: 'ascii' codec can't encode characters in position 273-285: ordinal not in range(128),请问要怎么解决? "

Answer:

在写入jsonl文件时,如果遇到UnicodeEncodeError的问题,可能是因为文件中包含了一些特殊字符,例如非ASCII字符。

解决这个问题的方法是,在写入jsonl文件之前,先对文件进行编码,将非ASCII字符转换为ASCII字符。

以下是一个Python示例代码,演示了如何对文件进行编码:

import codecs
import json

def encode_file(file_path):
    with codecs.open(file_path, 'r', 'utf-8') as f:
        lines = f.readlines()
    
    with codecs.open(file_path, 'w', 'ascii', 'ignore') as f:
        for line in lines:
            f.write(line)

encode_file('file.txt')

在这个代码中,我们首先打开文件,然后读取所有行。然后,我们打开一个新的文件,将所有行写入其中,并在写入之前进行编码。

注意,这个代码假设你的文件是UTF-8编码的。如果你的文件不是UTF-8编码的,你需要修改'utf-8'为你的文件的实际编码。

另外,如果你不想忽略非ASCII字符,而是想直接抛出错误,你可以将'ignore'改为'strict'。

这个代码将文件中的所有非ASCII字符转换为ASCII字符,然后写入一个新的文件中。

SQL生成(Text2Sql)

虽然模型微调数据并不包含SQL数据,在这里对模型生成SQL能力也进行了评测,旨在评测模型在其他代码相关任务上的泛化能力,评测结果说明模型在简单SQL生成(包括MAX/MIN/</>/=等基础SQL语法)上表现不错,但是在多表JOIN ON、 GROUP BY等复杂SQL语法上,并不能生成编译正确的SQL语句,以下是一些具体的SQL生成cases:

图片

从上述展示结果来看,微调后的codegeex2-6b-mft模型在SQL生成上也有不错的效果,而且SQL数据并不在微调训练集内,这个结果也能说明模型在代码生成相关任务具有一定的泛化能力,接下来,尝试几个复杂的SQL语句,发现微调后的模型不能生成正确的SQL语句,这也是在预期内,毕竟没有用SQL的数据做特殊的微调,所以模型理解不了复杂的SQL任务,具体案例展示如下所示:

图片

其他示例

除了代码相关指令,对微调后的模型在中英文翻译,基础QA问答等任务上进行了评测,由于基座模型codegeex2-6b本身也是代码模型,微调的数据又是代码数据,所以模型在日常问答上的表现有所欠缺,这也是在预期范围内的表现,以下是一些日常对话问答的例子,未经过筛选:

Q: 请你写一个大熊猫和小兔子之间的故事,字数限制在50字以内

A: 一只大熊猫和一只小兔子在森林里相遇了。

大熊猫对小兔子说:“小兔子,你和我一起生存吧,我们成为好朋友!”

小兔子说:“好呀好!”

大熊猫和兔子一起生活了一段时间,他们经常一起爬山,一起玩。

有一天,大熊猫问小兔子:“你打算什么时候生儿育女呢?”

小兔子说:“我也不知道,也许在未来的某一天吧。”

大熊猫说:“那好,我先去种树,你先去生儿育女吧。”

小兔子说:“好!”

大熊猫种了很多树,然后他死了。

小兔子生了一只小熊猫,然后他也死了。

大熊猫的孙子们和兔子的小子们继续生活,但是大熊猫和兔子再也没有在一起过。

故事结束。

Q:把李白的《静夜思》翻译成英文

A:

ure, I can help you translate the poem "静夜思" into English.

Here is the translation:

"When the moonlight is at its brightest,

When the moonlight is at its brightest,

When the moonlight is at its brightest,

I'll be dreaming of a blue moonlight.

When the moonlight is at its brightest,

When the moonlight is at its brightest,

When the moonlight is at its brightest,

I'll be dreaming of a blue moonlight."

Q:给自己许久不见的老师写一封邮件,问候他的情况

A:

I'm sorry to hear that. I hope everything is okay now. Please let me know if there's anything else I can do to help.

部署CodeFuse-CodeGeeX2-6B 可以使用ModelScope默认的环境,CPU免费,GPU有使用时常,也可以自己挂阿里云的DSW,这里使用ModelScope的,因为要用GPU所以选择后者。通过调整transformers版本解决:pip install transformers==4.33.2。按照ModelScope的模型指引页面,安装好对应的依赖。通过调整torch版本解决:pip install torch==2.2.1。1、在哪里找LLM模型。 阅读详情

相关推荐

vscode Copilot免费代码开发辅助AI工具;其他CodeWhisperer、CodeGeeX、Codeium

vscode应用市场可以直接搜索安装: vscode安装后左侧状态栏图标: CodeGeeX国产,支持代码解释,聊天框 Codeium也支持代码解释,聊天框

weixin_42357472的博客 2923

代码生成的原理解析:从Codex、GitHub Copliot到CodeLlama(用了NTK-aware)、CodeGeex

我们在这篇文章《》中的2.5节有提到,“2021 年7月,OpenAI发布Codex的论文《》,其中初始的Codex是根据120亿参数的GPT-3变体进行微调的,且通过对159GB的Python代码进行代码训练,后来这个120 亿参数的模型演变成OpenAI API中的code-cushman-001,具备较强的代码/推理能力”接下来,我们来看下Codex背后的原理到底是怎样的,即其是如何一步一步训练出来的。

结构之法 算法之道 1万+

ISO 26262中的失效率计算:Mission profile的使用

Mission profile:任务剖面,即产品在完成规定任务这段时间内所经历的时间和环境的时序描述;集成电路在工作时环境温度是在不停变化的,同时也存在运行状态和非运行状态;为此标准提出了根据任务剖面(Mission profile)以及集成电路的实际结温来评估热幅度变化、循环温度幅值等因素的影响;汽车电子元器件相关的Mission profile参考IEC TR 62380:Table 11。

weixin_47071127的博客 4809

codegeex2-6b-int4 部署

模型文件仓库文件地址推理教程。

m0_60657960的博客 638

Isaac Sim 使用经验(配置要求,云服务器)

Google Colab及AutoDL都是在docker内运行,其中google colab并不支持docker指令,而依照AutoDL的相关文档,AutoDL并不直接提供docker指令。2. Google Colab/AutoDL 不支持图形化界面,图形渲染等任务,所以没有办法使用Omniverse Streaming进行直播,从而更好的对结果进行展示。对于第一点,或许存在直接手动复现镜像的可能,但是考虑到Isaac Sim/Isaac Lab由于比较新,可能不够稳定,因此还是按照官方文档进行部署。

weixin_44211433的博客 4587

用Arduino Mega2560和TB6612驱动MG513电机,我踩过的坑和最佳实践

本文详细介绍了使用Arduino Mega2560和TB6612驱动模块控制MG513直流电机的实战经验,包括硬件连接、PWM配置、编码器信号处理等关键技巧。通过优化电源系统、信号线布局和软件控制算法,有效解决了电机抖动、转速不稳等常见问题,为机器人底盘和自动化项目提供了可靠解决方案。

weixin_42520573的博客 201

CodeFuse-MFTCoder提升Qwen-14B代码能力

在五种编程语言的代码补全测试集HumanEval-x上进行了相关评测(见表2),测试结果显示与Baichun2-13B-Base、Qwen-14B-Base、CodeGeex2-6B、StarCoder-15B等模型相比,微调后的Qwen-14B-MFT在Java/Python/Cpp/JavaScript均是Top1,相对于底座平均提升10%+。Qwen官方透出的评测,在各项能力上都超过了同等大小的开源大语言模型,包括LLaMA,LLaMA2,ChatGLM2,Baichuan2,InternLM等。

CodeFuse的博客 1017

DELPHI11 利用Android手机实现条码扫描功能

好了,整个过程全部结束,当然这只是最简单的例子,只是演示一下如何识别条码,更多的条码处理功能,比如优化,提速等需要在后面继续。安装过程中所有提示框全部按OK就可以,直到提示安装成功,那么ZXing库就成功完成了安装。点击红框标识的文件夹图标,将下载的ZXing库文件路径加入进来后,点ADD。第三步:选择下载的ZXing库路径,并按Ctrl + A进行全选,并导入。至此为止,我们的库才算是全部安装完成,可以在DELPHI 中正常引用了。2.打开相机,识别条码,并将条码内容显示在MEMO1中。

1529

ChinaSoft 展商风采 | 蚂蚁CodeFuse:开源介绍与论文解读

2023年CCF中国软件大会(CCF ChinaSoft 2023)由CCF主办,CCF系统软件专委会、形式化方法专委会、软件工程专委会以及复旦大学联合承办,于2023年12月1-3日在上海国际会议中心举行。本次大会主题是“智能化软件创新推动数字经济与社会发展”,学术、工业、教育、竞赛等分论坛活动40余场。目前大会已圆满结束!CCF ChinaSoft 2023官方首页:http://chinas...

pengxin_ce的博客 1356

提示词工程在机器翻译质量提升中的应用

Introduction to Prompt Engineering in Machine Translation Quality Improvement Keywords

AI天才研究院 1151

dy创作者平台上传并发布视频

整体上来说不是很难,就是过程有点复杂。因为这个是别人给的单子,所以这里不放源码了。细致一点就可以搞定。如果要Signature算法,可私信,不免费。

记录一些web逆向的过程 1515

MFTCoder论文被KDD 2024接收,开源v0.4.2版发布

CodeFuse在2023年9月开源了一种多任务微调框架——MFTCoder,它可以实现在多个任务上同时并行地进行微调。通过结合多种损失函数,我们有效地解决了多任务学习中常见的任务间数据量不平衡、难易不一和收敛速度不一致等挑战。大量实验结果显示,相较于单独对单个任务进行微调或者多任务混合为一后进行微调,我们的多任务微调方法表现更优。此外,MFTCoder具备高效训练特征,包括提供高效的数据Tokenization模式,支持PEFT微调和全量微调,能有效提升微调训练速度并降低对资源的需求。

CodeFuse的博客 1112

解锁激光加工密码:功率、频率、脉宽、占空比全解析

激光加工利用高能量激光束实现材料加工,具有无接触、高效率等特点。其核心参数包括功率(决定能量输出)、频率(控制脉冲重复)、脉宽(调节能量作用时间)和占空比(调控工作周期),这些参数相互协同影响加工效果。针对不同材料需采用差异化参数组合:金属材料需较高功率,塑料需低功率防过热,陶瓷需高频短脉宽减少热应力。实际操作中应通过小范围测试逐步优化参数,并注意解决烧损、切割不平整等常见问题。合理调节这些参数可实现高质量、高效率的激光加工。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 614

MFTCoder 重磅升级 v0.3.0 发布,支持 Mixtral 等更多模型,支持收敛均衡,支持 FSDP

CodeFuse在2023年9月开源了一种多任务微调框架——MFTCoder,它可以实现在多个任务上同时并行地进行微调。通过结合多种损失函数,我们有效地解决了多任务学习中常见的任务间数据量不平衡、难易不一和收敛速度不一致等挑战。大量实验结果显示,相较于单独对单个任务进行微调或者多任务混合为一后进行微调,我们的多任务微调方法表现更优。此外,MFTCoder具备高效训练特征,包括提供高效的数据Tokenization模式和支持PEFT微调,能有效提升微调训练速度并降低对资源的需求。

CodeFuse的博客 1168

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

干货!MFTCoder论文多任务微调技术详解

来自:CodeFuse代码大模型(Code LLMs)已经成为一个专门的研究领域,通过使用代码相关数据对预训练模型进行微调来提升模型的编码能力。以往的微调方法通常针对特定的下游任务或场景进行定制,意味着每个任务需要单独进行微调,需要大量的训练资源,并且由于多个模型并存而难于维护和部署。此外,这些方法未能利用不同代码任务之间的内在联系。为了克服这些限制,我们提出了一种多任务微调框架——MFTCode...

zenRRan的博客 989

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

部署代码生成模型CodeGeeX2

大家需要从huggingface下载CodeGeex2的模型文件,可以直接下载到本地,也可以git clone,这里给huggingface的地址,大家自行下载。

qq_51987242的博客 4592

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

「CodeFuse」CodeFuse简介及项目应用实战

CodeFuse 是一款为国内开发者提供智能研发服务的产品,该产品是基于蚂蚁集团自研的基础大模型进行微调的代码大模型,旨在辅助开发者提高编码效率和代码质量。它提供了多项功能,包括辅助编码、代码优化和生成单测。通过海量数据提供实时的代码补全服务,包括行内补全和片段补全,并支持解释代码、生成注释等功能,帮助开发者快速完成功能研发,提高研发效率。此外,CodeFuse 还能对选定的代码段进行分析理解,提出优化和改进建议,并能直接基于改进建议形成代码补丁,帮助开发者写出更好的代码。

GIS摆渡人 1万+

仅需6GB显存,拥有专属AI代码助手

清华GLM技术团队打造的多语言代码生成模型CodeGeeX近期更新了新的开源版本「CodeGeeX2-6B」。CodeGeeX2是多语言代码生成模型CodeGeeX的第二代模型,不同于一代 CodeGeeX ,CodeGeeX2 是基于 ChatGLM2 架构加入代码预训练实现。得益于 ChatGLM2 的更优性能,CodeGeeX2 在多项指标上取得性能提升(+107% > CodeGeeX),仅60亿参数即超过150亿参数的 StarCoder-15B 近10%。

specssss的博客 705

【自然语言处理】【大模型】CodeGeeX:用于代码生成的多语言预训练模型

​ 代码生成的目标是:给定人类意图的描述(例如:“写一个阶乘函数”),系统自动生成可执行程序。这个任务由来已久,解决的方案也层出不穷。近期,通过将程序看作是语言序列,利用深度学习的transformer架构进行建模,显著的改善了代码生成的质量。特别是当大规模的开源代码数据与大语言模型相结合。​ OpenAI的12B模型CodeX证明了在数十亿行公开代码上预训练的大模型的潜力。通过使用生成式预训练的方式,CodeX能够很好地解决python中的入门级编程问题。

bqw的博客 7220

国产最强的 AI 代码生成插件:CodeGeeX

首先,我们来看一下官方对它的介绍CodeGeeX 是一款基于大模型的智能编程助手,它可以实现代码的生成与补全,自动为代码添加注释,不同编程语言的代码间实现互译以及针对技术和代码问题的智能问答功能。帮助开发者显著提高工作效率,CodeGeeX 支持 100+ 种编程语言,适配多种主流 IDE 平台,包括 VSCode,JetBrains IDEs,Vim,HBuilderX,DeepIn-IDE等。

weixin_42104279的博客 2460

微调codegeex

再跑,又出现了原来的问题,说明还是得自己设置device_map,但是全部都自己设置也非常麻烦,于是我就在infer_auto_device_map的基础上做一些修改,把同一层的参数放到同一张卡上,然后试着跑,如果报错就根据报错的代码找到对应的卡以及卡上的数据,再进行调整,最终终于给我跑起来了,真是不容易。device_map的设置可以多尝试,不知道哪些数据要放在同一张卡上,那就拿一张卡只放一层的数据,报错的时候会显示两个cuda的号码,就可以推断出那个只有一层数据的卡上的数据所属的层。

weixin_45783996的博客 1093

CodeGeeX2 模型全新上线,编程助手能力全面升级!

在新模型的支撑下,插件中的问答功能“Ask CodeGeeX”也得到了升级。更新后,该功能使用的模型换成了基于CodeGeeX2-6B微调得到的对话模型,在回答编程相关的问题时,比之前更专业、更智能。在 HumanEval 评测中,CodeGeeX2-6B的表现全面超越了参数规模更大的 StarCoder 模型以及 OpenAI 的 Code-Cushman-001 模型(GitHub Copilot 曾使用的模型)。相比一代模型 ,CodeGeeX2-6B在代码生成的精度和速度上都有极大的提升。

马沛专栏 1081

CodeFormer 安装

2.执行python开头的命令时,把[input folder]整体替换成待处理的图片所在的文件夹路径。整体图像和视频增强同理,都是把[]替换成路径。1.每次使用前都要先进入cmd,执行cd CodeFormer,进入安装目录后再执行对应命令。,并将其放到weights/CodeFormer下(如果不行,可以用下面的命令),并将其放到weights/facelib下(如果不行,可以用下面的命令)图片修复、去水印、黑白还原为彩色等功能。4.w为保真度,取值为0到1。3.结果在result里面。

GodGump的博客 2万+

帮你写代码的大模型CodeGeeX!

CodeGeeX能获得最佳的平均性能,显著超越了参数量更小的模型(7.5%~16.3%的提升),与参数量更大的模型CodeGen-Multi-16B表现相当(平均性能 54.76% vs. 54.39%)。提示模式的原理是利用CodeGeeX强大的少样本生成能力,可以在输入中添加额外的提示来实现一些有趣的功能,包括且并不限于代码解释、概括、以特定风格生成等。选择当前选中代码的语言,CodeGeeX将会把代码翻译成IDE当前编写的语言,点击翻译结果上方的“use code”即可将翻译结果插入文件。

z2021_000000的博客 8207
上一篇: DevOps-Eval:蚂蚁集团联合北京大学发布首个面向DevOps领域的大语言模型评测基准!
下一篇: CodeFuse开源ModelCache大模型语义缓存
CodeFuse
博客等级 码龄3年 630粉丝 74原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值