/ Модель

Характеристики

Контекст
32 768 токенов
Параметры
7,1 млрд
Размер весов
93,4 ГБ
Лицензия
Своя лицензия
Архитектура
mixtral · MoE
Опубликована
12 янв 2024

CodeFuse-Mixtral-8x7B

Генерация текстаТекст → текст7 профессий

CodeFuse-Mixtral-8x7B — дообученная CodeFuse модель на базе Mixtral для генерации кода и решения задач программирования по текстовым запросам.

26скачиваний за 30 дней5лайковвеса обновлены19 янв 2024

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Тесты пользователейпока нет

Никто ещё не опубликовал тест этой модели. Соберите бенчмарк из своих задач — результат появится здесь.

  1. Добавьте модель в бенчмарк

    Вместе с другими моделями категории «Текст» — сравнение идёт внутри одной категории.

  2. Опишите свои задачи

    Напишите запросы, при необходимости приложите файлы и эталонные ответы.

  3. Запустите и опубликуйте

    Модели ответят на каждую задачу, судья оценит ответы. Опубликованный результат появится на этой странице.

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

CodeFuse-Mixtral-8x7B — языковая модель для программирования, разработанная CodeFuse и дообученная методом QLoRA на базе Mixtral-8x7B-v0.1. В метаданных указаны архитектура Mixtral с механизмом смеси экспертов (MoE), 7,1 млрд параметров и контекст до 32 768 токенов.

Модель предназначена для генерации кода и решения связанных с программированием задач в формате текстового запроса и ответа. README приводит результат 56,1% pass@1 на HumanEval при жадном декодировании. Модель использует формат запросов с метками ролей; для подсказок по коду также применяются метки языка, например Python.

В карточке указана лицензия «other», без уточнения конкретных условий. Результат HumanEval отражает один тестовый набор и сам по себе не гарантирует качество на других языках программирования и задачах.

Сценарии применения

  • генерация кода по текстовому описанию
  • заполнение пропусков и продолжение фрагментов кода
  • решение задач программирования в стиле HumanEval
  • получение ответов на вопросы о программном коде

Ограничения

README сообщает результат 56,1% pass@1 на HumanEval при жадном декодировании, но он не характеризует качество на всех языках и типах задач. В карточке указана лицензия «other» без конкретизации условий.

Для каких профессий подходит7

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Также подходит для

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

Model Card for CodeFuse-Mixtral-8x7B

logo

[中文] [English]

Model Description

CodeFuse-Mixtral-8x7B is a Code-LLM finetuned by QLoRA on multiple code-related tasks on the base model Mixtral-8x7B-v0.1(Mixture of Experts).

News and Updates

🔥🔥🔥 2024-01-12 CodeFuse-DeepSeek-33B has been released, achieving a pass@1 (greedy decoding) score of 78.65% on HumanEval.

🔥🔥🔥 2024-01-12 CodeFuse-Mixtral-8x7B has been released, achieving a pass@1 (greedy decoding) score of 56.1% on HumanEval, which is a 15% increase compared to Mixtral-8x7b's 40%.

🔥🔥 2023-11-10 CodeFuse-CodeGeeX2-6B has been released, achieving a pass@1 (greedy decoding) score of 45.12% on HumanEval, which is a 9.22% increase compared to CodeGeeX2 35.9%.

🔥🔥 2023-10-20 CodeFuse-QWen-14B technical documentation has been released. For those interested, please refer to the CodeFuse article on our WeChat official account via the provided link.(https://mp.weixin.qq.com/s/PCQPkvbvfxSPzsqjOILCDw)

🔥🔥 2023-10-16 CodeFuse-QWen-14B has been released, achieving a pass@1 (greedy decoding) score of 48.78% on HumanEval, which is a 16% increase compared to Qwen-14b's 32.3%.

🔥🔥 2023-09-27 CodeFuse-StarCoder-15B has been released, achieving a pass@1 (greedy decoding) score of 54.9% on HumanEval, which is a 21% increase compared to StarCoder's 33.6%.

🔥🔥 2023-09-26 We are pleased to announce the release of the 4-bit quantized version of CodeFuse-CodeLlama-34B. Despite the quantization process, the model still achieves a remarkable 73.8% accuracy (greedy decoding) on the HumanEval pass@1 metric.

🔥🔥 2023-09-11 CodeFuse-CodeLlama34B has achieved 74.4% of pass@1 (greedy decoding) on HumanEval, which is SOTA results for openspurced LLMs at present.

Code Community

Homepage: 🏡 https://github.com/codefuse-ai (Please give us your support with a Star🌟 + Fork🚀 + Watch👀)

  • If you wish to fine-tune the model yourself, you can visit ✨MFTCoder✨✨

  • If you wish to see a demo of the model, you can visit ✨CodeFuse Demo✨✨

Performance

Code

ModelHumanEval(pass@1)Date
CodeFuse-DeepSeek-33B78.65%2024.01
CodeFuse-Mixtral-8x7B56.10%2024.01
CodeFuse-CodeLlama-34B74.4%2023.9
CodeFuse-CodeLlama-34B-4bits73.8%2023.9
CodeFuse-StarCoder-15B54.9%2023.9
CodeFuse-QWen-14B48.78%2023.10
CodeFuse-CodeGeeX2-6B45.12%2023.11
WizardCoder-Python-34B-V1.073.2%2023.8
GPT-4(zero-shot)67.0%2023.3
PanGu-Coder2 15B61.6%2023.8
CodeLlama-34b-Python53.7%2023.8
CodeLlama-34b48.8%2023.8
GPT-3.5(zero-shot)48.1%2022.11
OctoCoder46.2%2023.8
StarCoder-15B33.6%2023.5
Qwen-14b32.3%2023.10

Requirements

  • python>=3.8
  • pytorch>=2.0.0
  • transformers>=4.33.2
  • Sentencepiece
  • CUDA 11.4

Inference String Format

The inference string is a concatenated string formed by combining conversation data(system, human and bot contents) in the training data format. It is used as input during the inference process. Here are examples of prompts used to request the model:

Multi-Round with System Prompt:

"""
<s>system
System instruction
<s>human
Human 1st round input
<s>bot
Bot 1st round output</s>
<s>human
Human 2nd round input
<s>bot
Bot 2nd round output</s>
...
...
...
<s>human
Human nth round input
<s>bot
"""

Single-Round without System Prompt:

"""
<s>human
User prompt...
<s>bot

"""

In this format, the system section is optional and the conversation can be either single-turn or multi-turn. When applying inference, you always make your input string end with "<s>bot" to ask the model generating answers.

For example, the format used to infer HumanEval is like the following:

<s>human
# language: Python
from typing import List
def separate_paren_groups(paren_string: str) -> List[str]:
    """ Input to this function is a string containing multiple groups of nested parentheses. Your goal is to
    separate those group into separate strings and return the list of those.
    Separate groups are balanced (each open brace is properly closed) and not nested within each other
    Ignore any spaces in the input string.
    >>> separate_paren_groups('( ) (( )) (( )( ))')
    ['()', '(())', '(()())']
    """
<s>bot

Specifically, we also add the Programming Language Tag (e.g. "# language: Python" for Python) used by CodeGeex models.

Quickstart

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig
 
def load_model_tokenizer(model_path):
    tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True, use_fast=False, legacy=False)
    tokenizer.eos_token = "</s>"
    tokenizer.pad_token = "</s>"
    tokenizer.eos_token_id = tokenizer.convert_tokens_to_ids(tokenizer.eos_token)
    tokenizer.pad_token_id = tokenizer.convert_tokens_to_ids(tokenizer.pad_token)
    tokenizer.padding_side = "left"
    
    model = AutoModelForCausalLM.from_pretrained(model_path, device_map='auto',torch_dtype=torch.bfloat16, trust_remote_code=True)
    return model, tokenizer


HUMAN_ROLE_START_TAG = "<s>human\n"
BOT_ROLE_START_TAG = "<s>bot\n"

text_list = [f'{HUMAN_ROLE_START_TAG}Write a QuickSort program\n#Python\n{BOT_ROLE_START_TAG}']

model, tokenizer = load_model_tokenizer("codefuse-ai/CodeFuse-Mixtral-8x7B")
inputs = tokenizer(text_list, return_tensors='pt', padding=True, add_special_tokens=False).to('cuda')
input_ids = inputs["input_ids"]
attention_mask = inputs["attention_mask"]
generation_config = GenerationConfig(
        eos_token_id=tokenizer.eos_token_id,
        pad_token_id=tokenizer.pad_token_id,
        temperature=0.1,
        max_new_tokens=512,
        num_return_sequences=1,
        num_beams=1,
        top_p=0.95,
        do_sample=False
)
outputs = model.generate(
        inputs= input_ids,
        attention_mask=attention_mask,
        **generation_config.to_dict()
)
gen_text = tokenizer.batch_decode(outputs[:, input_ids.shape[1]:], skip_special_tokens=True)
print(gen_text[0])

模型简介

CodeFuse-Mixtral-8x7B 是一个通过QLoRA对基座模型Mixtral-8x7B进行多代码任务微调而得到的代码大模型。

新闻

🔥🔥🔥 2024-01-12 CodeFuse-DeepSeek-33B模型发布,模型在HumanEval pass@1指标为78.65% (贪婪解码)。

🔥🔥🔥 2024-01-12 CodeFuse-Mixtral-8x7B模型发布,模型在HumanEval pass@1指标为56.1% (贪婪解码)。微信公众号文章:https://mp.weixin.qq.com/s/xI3f0iUKq9TIIKZ_kMtcQg

🔥🔥🔥 2023-11-10 开源了CodeFuse-CodeGeeX2-6B模型,在HumanEval pass@1(greedy decoding)上可以达到48.12%, 比CodeGeeX2提高了9.22%的代码能力(HumanEval)

🔥🔥🔥 2023-10-20 公布了CodeFuse-QWen-14B技术文档,感兴趣详见微信公众号CodeFuse文章:https://mp.weixin.qq.com/s/PCQPkvbvfxSPzsqjOILCDw

🔥🔥🔥 2023-10-16开源了CodeFuse-QWen-14B模型,在HumanEval pass@1(greedy decoding)上可以达到48.78%, 比Qwen-14b提高了16%的代码能力(HumanEval)

🔥🔥🔥 2023-09-27开源了CodeFuse-StarCoder-15B模型,在HumanEval pass@1(greedy decoding)上可以达到54.9%, 比StarCoder提高了21%的代码能力(HumanEval)

🔥🔥🔥 2023-09-26 CodeFuse-CodeLlama-34B-4bits 量化版本发布,量化后模型在HumanEval pass@1指标为73.8% (贪婪解码)。

🔥🔥🔥 2023-09-11 CodeFuse-CodeLlama-34B 发布,HumanEval pass@1指标达到74.4% (贪婪解码), 为当前开源SOTA。

代码社区

大本营: 🏡 https://github.com/codefuse-ai (请支持我们的项目Star🌟 + Fork🚀 + Watch👀)

  • 如果您想自己微调该模型,可以访问 ✨MFTCoder✨✨

  • 如果您想观看该模型示例,可以访问 ✨CodeFuse Demo✨✨

评测表现

代码

模型HumanEval(pass@1)日期
CodeFuse-DeepSeek-33B78.65%2024.01
CodeFuse-Mixtral-8x7B56.10%2024.01
CodeFuse-CodeLlama-34B74.4%2023.9
CodeFuse-CodeLlama-34B-4bits73.8%2023.9
CodeFuse-StarCoder-15B54.9%2023.9
CodeFuse-QWen-14B48.78%2023.10
CodeFuse-CodeGeeX2-6B45.12%2023.11
WizardCoder-Python-34B-V1.073.2%2023.8
GPT-4(zero-shot)67.0%2023.3
PanGu-Coder2 15B61.6%2023.8
CodeLlama-34b-Python53.7%2023.8
CodeLlama-34b48.8%2023.8
GPT-3.5(zero-shot)48.1%2022.11
OctoCoder46.2%2023.8
StarCoder-15B33.6%2023.5
Qwen-14b32.3%2023.10

Requirements

  • python>=3.8
  • pytorch>=2.0.0
  • transformers>=4.33.2
  • Sentencepiece
  • CUDA 11.4

推理数据格式

推理数据为模型在训练数据格式下拼接的字符串形式,它也是推理时输入prompt拼接的方式. 下面分别是带系统提示的多轮会话格式和不带系统提示的单轮会话格式:

带System提示的多轮会话格式:

"""
<s>system
System instruction
<s>human
Human 1st round input
<s>bot
Bot 1st round output</s>
<s>human
Human 2nd round input
<s>bot
Bot 2nd round output</s>
...
...
...
<s>human
Human nth round input
<s>bot
"""

不带System提示的单轮会话格式:

"""
<s>human
User prompt...
<s>bot

"""

在这个格式中,System提示是可选的(按需设定),支持单轮会话也支持多轮会话。推理时,请确保拼接的prompt字符串以"<s>bot\n"结尾,引导模型生成回答。

例如,推理HumanEval数据时使用的格式如下所示:

<s>human
# language: Python
from typing import List
def separate_paren_groups(paren_string: str) -> List[str]:
    """ Input to this function is a string containing multiple groups of nested parentheses. Your goal is to
    separate those group into separate strings and return the list of those.
    Separate groups are balanced (each open brace is properly closed) and not nested within each other
    Ignore any spaces in the input string.
    >>> separate_paren_groups('( ) (( )) (( )( ))')
    ['()', '(())', '(()())']
    """
<s>bot

特别地,我们也使用了CodeGeeX系列模型采用的编程语言区分标签(例如,对于Python语言,我们会使用"# language: Python")。

快速使用

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig
 
def load_model_tokenizer(model_path):
    tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True, use_fast=False, legacy=False)
    tokenizer.eos_token = "<|end▁of▁sentence|>"
    tokenizer.pad_token = "<|end▁of▁sentence|>"
    tokenizer.eos_token_id = tokenizer.convert_tokens_to_ids(tokenizer.eos_token)
    tokenizer.pad_token_id = tokenizer.convert_tokens_to_ids(tokenizer.pad_token)
    tokenizer.padding_side = "left"
    
    model = AutoModelForCausalLM.from_pretrained(model_path, device_map='auto',torch_dtype=torch.bfloat16, trust_remote_code=True)
    return model, tokenizer


HUMAN_ROLE_START_TAG = "<s>human\n"
BOT_ROLE_START_TAG = "<s>bot\n"


text_list = [f'{HUMAN_ROLE_START_TAG}请写一个快排程序\n#Python\n{BOT_ROLE_START_TAG}']

model, tokenizer = load_model_tokenizer("codefuse-ai/CodeFuse-Mixtral-8x7b")
inputs = tokenizer(text_list, return_tensors='pt', padding=True, add_special_tokens=False).to('cuda')
input_ids = inputs["input_ids"]
attention_mask = inputs["attention_mask"]
generation_config = GenerationConfig(
        eos_token_id=tokenizer.eos_token_id,
        pad_token_id=tokenizer.pad_token_id,
        temperature=0.2,
        max_new_tokens=512,
        num_return_sequences=1,
        num_beams=1,
        top_p=0.95,
        do_sample=False
)
outputs = model.generate(
        inputs= input_ids,
        attention_mask=attention_mask,
        **generation_config.to_dict()
)
gen_text = tokenizer.batch_decode(outputs[:, input_ids.shape[1]:], skip_special_tokens=True)
print(gen_text[0])

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

vLLM

Можно запустить

Подбираем GPU…

Класс архитектуры
MixtralForCausalLM
Ревизия весов
7aa2451

0 моделей