/ Модель

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

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

Qwen2.5-Coder-7B-manim

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

Дообученная на примерах 3Blue1Brown модель генерирует Python-код Manim для математических и учебных анимаций по текстовым описаниям.

167скачиваний за 30 дней2лайкавеса обновлены3 окт 2025

Бенчмарки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Harish102005/Qwen2.5-Coder-7B-manim — дообученная модель Qwen2ForCausalLM, созданная на базе Qwen/Qwen2.5-Coder-7B для генерации Python-кода анимаций Manim по текстовым описаниям. Модель дообучена методом QLoRA на 2 407 примерах «запрос — код» из набора dalle2/3blue1brown-manim; в метаданных указаны 7,1 млрд параметров и контекст до 32 768 токенов.

Модель предназначена для создания учебных математических анимаций, визуализаций, прототипов сцен и примеров кода Manim. README приводит примеры анимации вращающегося квадрата, построения синусоиды и появления формулы. Она также может помогать изучать синтаксис Manim и автоматизировать подготовку серий анимаций.

Обучающая выборка невелика и сосредоточена на стилях 3Blue1Brown: модель лучше подходит для типовых двумерных сцен, а сложные трёхмерные сцены, шейдеры и составные объекты могут потребовать ручной доработки. Репозиторий распространяется по лицензии Apache-2.0.

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

  • создание двумерных математических анимаций по текстовому запросу
  • построение графиков функций и их анимация в Manim
  • визуализация математических формул и понятий
  • быстрое прототипирование сцен Manim
  • подготовка примеров кода Manim для обучения

Ограничения

Обучающие данные ограничены 2 407 примерами и преимущественно отражают типовые двумерные анимации в стиле 3Blue1Brown. Для сложных трёхмерных сцен, шейдеров и составных объектов может понадобиться ручная доработка.

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

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

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

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

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

Открыть на Hugging Face

Qwen2.5-Coder-7B-Manim

Model on HF

Base Model

Generate Manim (Mathematical Animation Engine) Python code from natural language descriptions! Fine-tuned on 2,407 examples from the 3Blue1Brown Manim dataset using QLoRA with Unsloth.


🚀 Quick Start

Installation

pip install unsloth transformers accelerate

Load Model

from unsloth import FastLanguageModel

model, tokenizer = FastLanguageModel.from_pretrained(
    model_name="Harish102005/Qwen2.5-Coder-7B-manim",
    max_seq_length=2048,
    dtype=None,
    load_in_4bit=True,
)
FastLanguageModel.for_inference(model)

Generate Manim Code

# Alpaca-style prompt template
alpaca_prompt = """Below is an instruction that describes a task, paired with an input that provides further context. Write a response that appropriately completes the request.

### Instruction:
{}

### Input:
{}

### Response:
{}"""

prompt = "Create a blue circle that grows to twice its size"

inputs = tokenizer([
    alpaca_prompt.format(
        "Generate Manim code for the following task:",
        prompt,
        ""
    )
], return_tensors="pt").to("cuda")

outputs = model.generate(
    **inputs,
    max_new_tokens=512,
    temperature=0.3,
    top_p=0.9,
    repetition_penalty=1.1,
    do_sample=True,
)

generated_code = tokenizer.decode(outputs, skip_special_tokens=True)
print(generated_code.split("### Response:")[-1].strip())

Helper Function

def generate_manim_code(prompt, max_tokens=512):
    alpaca_prompt = """Below is an instruction that describes a task, paired with an input that provides further context. Write a response that appropriately completes the request.

### Instruction:
{}

### Input:
{}

### Response:
{}"""
    
    formatted_prompt = alpaca_prompt.format(
        "Generate Manim code for the following task:",
        prompt,
        ""
    )
    
    inputs = tokenizer([formatted_prompt], return_tensors="pt").to("cuda")
    outputs = model.generate(
        **inputs,
        max_new_tokens=max_tokens,
        temperature=0.3,
        top_p=0.9,
        repetition_penalty=1.1,
        do_sample=True,
    )
    
    generated_text = tokenizer.decode(outputs, skip_special_tokens=True)
    if "### Response:" in generated_text:
        code = generated_text.split("### Response:")[-1].strip()
        if "### Instruction:" in code:
            code = code.split("### Instruction:")[0].strip()
        return code
    
    return generated_text

# Example
code = generate_manim_code("Create a rotating square")
print(code)

📊 Example Outputs

1. Color-Changing Rotation

Prompt: "Create a rotating square that changes color from blue to red"

from manim import *

class MyScene(Scene):
    def construct(self):
        square = Square(color=BLUE)
        self.add(square)
        self.play(square.animate.rotate(PI), run_time=2)
        square.set_color(RED)

2. Mathematical Function

Prompt: "Draw a sine wave from 0 to 2π with animation"

from manim import *

class MyScene(Scene):
    def construct(self):
        axes = Axes(x_range=[0, 2*PI], y_range=[-1, 1])
        graph = axes.plot(lambda x: np.sin(x), color=BLUE)
        self.add(axes, graph)

3. Formula Display

Prompt: "Show the equation E=mc² and fade it in"

from manim import *

class MyScene(Scene):
    def construct(self):
        e_mc_squared = MathTex("E=mc^2")
        self.play(Write(e_mc_squared))
        self.wait()

📈 Model Details

  • Base Model: Qwen/Qwen2.5-Coder-7B
  • Fine-tuning Method: QLoRA (4-bit) with Unsloth
  • Dataset: dalle2/3blue1brown-manim
  • Dataset Size: 2,407 prompt-code pairs
  • Final Training Loss: 0.553
  • Model Type: Qwen2ForCausalLM
  • Parameters: ~7.6B (base), Trainable: 40.4M (0.53%)

Hyperparameters

ParameterValue
LoRA Rank (r)16
LoRA Alpha16
LoRA Dropout0.0
Target Modulesq_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj
Max Sequence Length2048
PrecisionBFloat16
Quantization4-bit NF4 (double quantization)

🎯 Use Cases

  • Generate educational animations (math tutorials, visualizations)
  • Rapid prototyping of visual content in Manim
  • Learning Manim syntax and animation techniques
  • Content automation (batch animation generation)

⚠️ Limitations

  • Primarily for 2D Manim animations; may struggle with complex 3D scenes
  • Training data limited to 3Blue1Brown patterns (2,407 examples)
  • Minor manual corrections may be needed for complex animations
  • Advanced Manim features (custom shaders, complex mobjects) not fully supported

🔧 Advanced Usage

Streaming Output

from transformers import TextStreamer

text_streamer = TextStreamer(tokenizer, skip_prompt=True)
_ = model.generate(**inputs, streamer=text_streamer, max_new_tokens=512, temperature=0.3)

Batch Generation

prompts = ["Create a blue circle", "Draw a red square", "Show a green triangle"]

for prompt in prompts:
    code = generate_manim_code(prompt)
    print(f"Prompt: {prompt}\n{code}\n{'-'*60}")

🙏 Acknowledgments



✅ Star this model if you find it useful!


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

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

GPU в ailist

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

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

Подбираем GPU…

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

0 моделей