/ Модель

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

Контекст
32 768 токенов
Параметры
1,5 млрд
Лицензия
Apache 2.0
Архитектура
qwen2 · dense
Базовая модель
Qwen2.5-Coder-1.5B-Instruct
Библиотека
transformers
Опубликована
2 окт 2026

Vesper-Coder-1.5B

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

Экспериментальная дообученная модель Qwen на 1,5 млрд параметров для генерации кода, не показавшая улучшения над базовой моделью в нормализованной оценке.

623скачиваний за 30 дней0лайковвеса обновлены3 окт 2026

Бенчмарки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Vesper-Coder-1.5B (v1, Gen-2) — экспериментальный плотный языковой чекпойнт для генерации кода, созданный на основе Qwen/Qwen2.5-Coder-1.5B-Instruct двумя раундами on-policy Direct Preference Optimization на пуле из 464 задач MBPP. Модель содержит 1,5 млрд параметров, использует архитектуру Qwen2 и поддерживает контекст до 32 768 токенов; доступна в формате safetensors для Transformers и работает в диалоговом режиме.

Модель предназначена для генерации решений задач программирования, прежде всего на Python. В нормализованных тестах MBPP, MBPP+ и HumanEval она не показала улучшения относительно базовой Qwen2.5-Coder-1.5B-Instruct и немного уступала ей по сырым результатам; README указывает, что ранее заявленное преимущество возникло из-за слишком короткого лимита генерации в тестовом стенде. Чекпойнт опубликован как воспроизводимый артефакт отрицательного результата. Лицензия — Apache-2.0.

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

  • генерация решений задач на Python
  • написание кода по текстовому запросу
  • участие в задачах MBPP и HumanEval
  • диалоговая помощь при программировании

Ограничения

В нормализованных тестах MBPP, MBPP+ и HumanEval модель не превзошла базовую Qwen2.5-Coder-1.5B-Instruct и немного уступала ей по точности. README описывает её как экспериментальный чекпойнт, а результаты зависят от корректной настройки лимита генерации и тестового стенда.

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

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

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

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

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

Открыть на Hugging Face

Vesper-Coder-1.5B (v1, Gen-2 Checkpoint)

Vesper-Coder-1.5B (v1) is an experimental 1.5B-parameter dense code generation checkpoint initialized from Qwen/Qwen2.5-Coder-1.5B-Instruct and trained via two rounds of on-policy Direct Preference Optimization (DPO) on a 464-task MBPP training pool.

Important Evaluation Update (Normalized Harness Audit): Under an EvalPlus-normalized evaluation harness (max_new_tokens=384 + AST post-processing sanitizer) with strictly leak-free prompt-example gating, the Vesper-Coder-1.5B (v1, Gen-2) weights do not improve over Base Qwen2.5-Coder-1.5B-Instruct (all paired two-sided McNemar $p > 0.05$; slightly trailing base on raw counts).

Earlier gains reported under our initial harness (max_new_tokens=256, no AST sanitizer: 54.86% vs. 47.47% on MBPP; 63.41% vs. 58.54% on HumanEval) were an artifact of the 256-token generation cap truncating verbose Base Qwen2.5-Coder-1.5B-Instruct outputs. Raising max_new_tokens to 384 and applying standard AST sanitization increased Base Qwen2.5-Coder-1.5B-Instruct 1-shot accuracy by +10.51 pp on MBPP (47.47% -> 57.98%) and +6.70 pp on HumanEval (58.54% -> 65.24%), eliminating the v1 weight advantage. We retain this checkpoint publicly as a reproducible artifact and negative-result audit for small-model on-policy DPO.


1. Checkpoint Provenance & How DPO Preference Pairs Were Selected

  • Exported Checkpoint: Gen-2 (second generation of iterative on-policy LoRA DPO, $r=16, \alpha=32$, merged into dense bfloat16 weights via merge_and_unload()). In the initial v1 experiments, Gen-1 (55 steps) and Gen-2 (115 steps) were evaluated directly on the test sets without a separate validation split; the uploaded weights in this repository are Gen-2.
  • Training Pool (N = 464 Tasks): Constructed from the full google-research-datasets/mbpp dataset (974 tasks) by removing all 257 task IDs belonging to the official MBPP-Sanitized test split (Train ∩ MBPP-Sanitized Test = ∅). Note that 147 of the 378 tasks in EvalPlus MBPP+ overlap with this 464-task pool; therefore, MBPP+ is reported both on all 378 tasks and on the strictly disjoint N = 231 subset.
  • How DPO Winners (y_win) and Losers (y_lose) Were Selected:
    1. For each task in the 464-task training pool, the model first generated a 1-shot greedy (T = 0.0, max_new_tokens = 256) solution.
    2. Solutions were executed in a sandbox against the training task's ground-truth test_list assertions.
    3. Whenever the T = 0.0 attempt failed (y_lose), up to 2 retry turns were sampled (T = 0.40–0.60, max_new_tokens = 256) conditioned on the sandbox execution error and a truncated function-header prefix. Any retry that passed all test_list assertions was recorded as a verified winner (y_win), forming an on-policy preference pair (prompt, y_win > y_lose).
    4. Why v1 DPO Did Not Transfer Under the 384-Token Normalized Harness: Because rollouts during v1 harvesting were capped at max_new_tokens = 256, many y_lose trajectories failed simply due to token truncation at 256 tokens, and y_win selected shorter responses that fit inside 256 tokens. Once evaluation was normalized to max_new_tokens = 384 with AST sanitization, Base Qwen2.5-Coder-1.5B-Instruct no longer suffered from 256-token truncation.

2. Normalized-Harness Benchmark Results (max_new_tokens=384 + AST Sanitizer)

All evaluations below use identical generation caps (max_new_tokens=384), identical AST sanitization, and strictly leak-free test-time retry gating (retry loops execute only the public example already shown in the prompt: test_list[0] on MBPP and docstring >>> examples on HumanEval).

A. 1-Shot (T = 0.0) & 3-Turn Retry Accuracy Across 6 Suites

Model & Evaluation RegimeMBPP Full (N=257)MBPP Held-Out (test_list[1:], N=257)MBPP+ All (35x, N=378)MBPP+ Disjoint (35x, N=231)HumanEval (N=164)HumanEval+ (80x, N=164)
Qwen2.5-Coder-1.5B-Instruct (1-Shot, Base)149 / 257 (57.98%)155 / 257 (60.31%)182 / 378 (48.15%)104 / 231 (45.02%)107 / 164 (65.24%)93 / 164 (56.71%)
Vesper-Coder-1.5B (1-Shot, Gen-2 Weights)143 / 257 (55.64%)149 / 257 (57.98%)170 / 378 (44.97%)103 / 231 (44.59%)106 / 164 (64.63%)91 / 164 (55.49%)
Qwen2.5-Coder-1.5B-Instruct (Naive 3-Turn Self-Debug)152 / 257 (59.14%)159 / 257 (61.87%)186 / 378 (49.21%)107 / 231 (46.32%)108 / 164 (65.85%)94 / 164 (57.32%)
Qwen2.5-Coder-1.5B-Instruct (3-Turn Partial Prune)167 / 257 (64.98%)173 / 257 (67.32%)203 / 378 (53.70%)120 / 231 (51.95%)106 / 164 (64.63%)93 / 164 (56.71%)
Vesper-Coder-1.5B (3-Turn Partial Prune, Gen-2)163 / 257 (63.42%)168 / 257 (65.37%)189 / 378 (50.00%)114 / 231 (49.35%)109 / 164 (66.46%)93 / 164 (56.71%)
Qwen2.5-Coder-1.5B-Instruct (3-Turn Full Reset / Best-of-3)181 / 257 (70.43%)185 / 257 (71.98%)213 / 378 (56.35%)126 / 231 (54.55%)111 / 164 (67.68%)97 / 164 (59.15%)

B. Paired Two-Sided Exact McNemar Tests: Vesper-Coder-1.5B (Gen-2) vs. Base Qwen2.5-Coder-1.5B-Instruct

Here b counts tasks where Vesper passes and Base fails; c counts tasks where Base passes and Vesper fails:

Comparison & SuiteBase PassVesper PassNet Diffb (Vesper only)c (Base only)Both PassNeither PassExact Two-Sided McNemar $p$
1-Shot: MBPP Full (N=257)149143-61723126910.4296 (no improvement)
1-Shot: MBPP Held-Out test_list[1:] (N=257)155149-61824131840.4408 (no improvement)
1-Shot: EvalPlus MBPP+ All (N=378)182170-1221331491750.1337 (no improvement)
1-Shot: OpenAI HumanEval (N=164)107106-191097481.0000 (no improvement)
1-Shot: EvalPlus HumanEval+ (N=164)9391-2101281610.8318 (no improvement)
3-Turn Partial Prune: MBPP Full (N=257)167163-41014153800.5413 (no improvement)
3-Turn Partial Prune: MBPP Held-Out (N=257)173168-51116157730.4421 (no improvement)
3-Turn Partial Prune: EvalPlus MBPP+ All (N=378)203189-1419331701560.0704 (no improvement)
3-Turn Partial Prune: OpenAI HumanEval (N=164)106109+311898470.6476 (no improvement)
3-Turn Partial Prune: EvalPlus HumanEval+ (N=164)93930101083611.0000 (no improvement)

3. Usage (transformers)

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "axieyangb/Vesper-Coder-1.5B"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    torch_dtype=torch.bfloat16,
    device_map="auto",
)

prompt = "Write a Python function `longest_increasing_subsequence(nums: list[int]) -> int` that returns the length of the longest strictly increasing subsequence."
messages = [
    {"role": "system", "content": "You are an expert Python programmer. Output clean, well-structured Python code."},
    {"role": "user", "content": prompt},
]

text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer([text], return_tensors="pt").to(model.device)

with torch.no_grad():
    generated_ids = model.generate(**inputs, max_new_tokens=384, do_sample=False)

response = tokenizer.decode(generated_ids[0][inputs.input_ids.shape[1]:], skip_special_tokens=True)
print(response)

License

Released under the Apache-2.0 License.

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

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

GPU в ailist

Универсальный рантайм · transformers

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

Подбираем GPU…

Класс архитектуры
Qwen2ForCausalLM
Ревизия весов
040fcf2

0 моделей