Weiter zum Inhalt

DeepSeek-Coder-V2 Tutorial: Beispiele, Installation, Benchmarks

DeepSeek-Coder-V2 ist ein Open-Source-Codemodell, das bei Codeaufgaben mit GPT-4, Gemini 1.5 Pro, Claude 3 Opus, Llama 3 70B oder Codestral mithalten kann.
Aktualisiert 18. Sept. 2026  · 8 Min. lesen

Mit KI erkunden

ChatGPTClaudePerplexity

Während KI-Coding-Assistenten wie GitHub Copilot bei Entwicklerinnen und Entwicklern an Popularität gewinnen, entstehen auch Open-Source-Alternativen.

Ein besonders spannendes Beispiel ist DeepSeek-Coder-V2, ein robustes Open-Source-Modell, das fortgeschrittene Machine-Learning-Techniken nutzt. Es ist speziell für Codeaufgaben konzipiert und liefert eine Performance, die bei Codegenerierung, -vervollständigung und -verständnis mit GPT-4 vergleichbar ist.

In diesem Artikel erkläre ich dir die Funktionen und Möglichkeiten von DeepSeek-Coder-V2 und zeige dir, wie du mit dem Tool startest.

KI-Anwendungen entwickeln

Lerne, wie man KI-Anwendungen mit der OpenAI API erstellt.
Start Upskilling for Free

Was ist DeepSeek-Coder-V2?

DeepSeek-Coder-V2 ist ein Open-Source-Mixture-of-Experts (MoE)-Codemodell, das bei code-spezifischen Aufgaben mit der Leistung von GPT-4 konkurriert. Für Entwicklerinnen und Entwickler entwickelt, bringt das Modell mehrere zentrale Stärken mit:

  • Mehrsprachig: Auf Code und natürliche Sprache in mehreren Sprachen trainiert, darunter Englisch und Chinesisch – ideal für globale Teams.
  • Vielseitig: Unterstützt über 338 Programmiersprachen und deckt damit unterschiedlichste Entwicklungsumgebungen und Anforderungen ab.
  • Großer Maßstab: Vortrainiert auf Billionen von Token aus Code- und Textdaten – das stärkt Verständnis und Generierungsleistung in vielfältigen Szenarien.
  • Mehrere Größen: Die Modelle sind in verschiedenen Größen verfügbar, sodass du je nach Rechenressourcen und Projektanforderungen flexibel wählen kannst.

Du kannst über DeepSeek’s Website darauf zugreifen, dort gibt es eine kostenpflichtige API und einen Chat. Der Quellcode ist auf GitHub verfügbar und das Forschungspaper liegt auf arXiv.

Die Modelle liegen auf Hugging Face – aufgrund der Größe brauchst du für den lokalen Betrieb allerdings Hardware auf Forschungsniveau.

DeepSeek-Coder-V2 Benchmarks

Schauen wir uns an, wie DeepSeek-Coder-V2 in Benchmarks abschneidet und wie es im Vergleich zu Modellen wie GPT-4 Turbo, Gemini 1.5 Pro, Claude 3 Opus, LLaMA 3-70B und Codestral abschneidet.

Quelle: Qihao Zhu et. al

HumanEval

Der HumanEval-Benchmark misst die Fähigkeit zur Codegenerierung, indem geprüft wird, ob generierter Code bestimmte Unit-Tests besteht. DeepSeek-Coder-V2 liefert hier hervorragende Ergebnisse mit einer Genauigkeit von 90,2 %. Das unterstreicht die Stärke des Modells, auch in komplexeren Szenarien funktionsfähige und korrekte Codeausschnitte zu erzeugen.

MBPP+

Der MBPP+-Benchmark fokussiert Codeverständnis und bewertet die Fähigkeit eines Modells, Codestrukturen und -semantik zu erfassen. DeepSeek-Coder-V2 überzeugt auch hier mit 76,2 % Genauigkeit und zeigt ein ausgeprägtes Verständnis von Bedeutung und Funktionalität von Code.

MATH

Der MATH-Benchmark testet mathematisches Schlussfolgern im Kontext von Code. DeepSeek-Coder-V2 liegt mit 75,7 % Genauigkeit vorn und zeigt damit Stärke bei mathemischen Operationen und Logik im Code – ein Kernaspekt vieler Programmieraufgaben.

GSM8K

GSM8K prüft das Lösen von Textaufgaben auf Grundschulniveau und bewertet damit Problemlösekompetenzen jenseits reiner Codegenerierung. DeepSeek-Coder-V2 liegt knapp hinter Claude 3 Opus mit 94,9 % Genauigkeit und zeigt, dass es mathematische Fragestellungen in natürlicher Sprache gut erfassen und lösen kann.

Aider

Der Aider-Benchmark bewertet die Fähigkeit eines Modells, Codehilfe und Vorschläge zu geben. DeepSeek-Coder-V2 führt hier mit 73,7 % Genauigkeit und eignet sich damit als wertvolles Werkzeug für Entwicklerinnen und Entwickler, die Echtzeitunterstützung suchen.

LiveCodeBench

LiveCodeBench misst die Codegenerierung in realen Anwendungsszenarien. DeepSeek-Coder-V2 erreicht 43,4 % Genauigkeit (zweiter Platz nach GPT-4-Turbo-0409) und zeigt damit, dass es in der Praxis funktionsfähigen, nutzbaren Code erzeugen kann.

SWE Bench Benchmark

​​Der SWE-Bench-Benchmark bewertet speziell die Fähigkeit von KI-Modellen, Software-Engineering-Aufgaben wie Codegenerierung, Debugging und das Verständnis komplexer Programmierkonzepte zu bewältigen. DeepSeek-Coder-V2 erzielt hier 12,7 Punkte – solide, aber nicht führend. Es liegt hinter GPT-4-Turbo-0409 (18,7) und Gemini-1.5-Pro (18,3), die in diesen Aufgaben stärker sind. Dennoch übertrifft DeepSeek-Coder-V2 Modelle wie Claude-3-Opus (11,7), Llama-3-70B (2,7) und Codestral und ist damit laut diesem Benchmark eine zuverlässige, wenn auch nicht Spitzen-Option für Software-Engineering-Anwendungen.

So funktioniert DeepSeek-Coder-V2

DeepSeek-Coder-V2 baut auf DeepSeek-V2 auf und nutzt eine ausgefeilte Mixture-of-Experts-(MoE)-Architektur für starke Leistungen bei Codeaufgaben. Das Modell greift auf mehrere Expertinnen/Experten-Modelle zurück, die auf unterschiedliche Codetätigkeiten spezialisiert sind, und wählt dynamisch die passendsten Experten anhand der Eingabe aus. Das steigert Effizienz und Genauigkeit.

Das Training von DeepSeek-Coder-V2 umfasst mehrere Bausteine. Vortrainiert wurde es auf einem umfangreichen Datensatz aus 60 % Quellcode, 10 % Mathe-Korpus und 30 % natürlicher Sprache – insgesamt 10,2 Billionen Token. Diese Vielfalt ermöglicht es dem Modell, Code effektiv zu verstehen und zu generieren. Der Quellcode-Datensatz umfasst 1.170 Milliarden Token aus GitHub und CommonCrawl und deckt 338 Programmiersprachen ab – eine deutliche Erweiterung gegenüber früheren Modellen.

DeepSeek-Coder-V2 features

Nach dem Pretraining folgt ein Feintuning mit einem speziellen Instruktionsdatensatz aus Coding-, Mathematik- und allgemeinen Sprachaufgaben. Dadurch reagiert das Modell besser auf natürliche Spracheingaben und wird zu einem hilfreichen Assistenten.

Für alle, die sich für die Architektur interessieren: Das zugrunde liegende DeepSeek-V2 führt Neuerungen wie Multi-head Latent Attention (MLA) und das DeepSeekMoE-Framework ein. Diese Innovationen ermöglichen effiziente Inferenz und kostengünstiges Training – Details findest du im DeepSeek-V2-Paper auf arXiv.

Erste Schritte mit DeepSeek-Coder-V2

Es gibt mehrere Wege, mit DeepSeek-Coder-V2 zu starten. Du kannst das Modell lokal über die transformers-Bibliothek von Hugging Face ausführen. Beachte aber, dass die Modelle sehr groß sind und erhebliche Rechenressourcen erfordern.

Alternativ bietet DeepSeek eine kostenpflichtige API und eine Online-Chat-Oberfläche ähnlich wie ChatGPT. Der Online-Chat von DeepSeek kann sogar HTML- und JavaScript-Code direkt im Chatfenster ausführen! Diese Funktion ist ziemlich innovativ – etwas Vergleichbares kenne ich bisher nur von den Artifacts des Modells Claude 3.5 Sonnet. Für diesen Artikel nutzen wir den Chat für unsere Beispiele.

DeepSeek-Coder-V2: Beispiele aus der Praxis

Im ersten Beispiel bitte ich das Modell, Conways Game of Life in HTML und JavaScript zu programmieren. Mein Prompt lautete: „Can you write Conway’s game of life in HTML?“ Hier ist die Antwort:

Certainly! Below is a simple implementation of Conway's Game of Life using HTML, CSS, and JavaScript. This version will display the grid in an HTML table and update it every second.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Conway's Game of Life</title>
    <style>
        table {
            border-collapse: collapse;
        }
        td {
            width: 10px;
            height: 10px;
            border: 1px solid #ccc;
        }
        .alive {
            background-color: black;
        }
        .dead {
            background-color: white;
        }
    </style>
</head>
<body>
    <h1>Conway's Game of Life</h1>
    <table id="grid"></table>
    <script>
        const N = 50; // Grid size
        let grid = createGrid(N);
        let intervalId;
        function createGrid(N) {
            let grid = new Array(N);
            for (let i = 0; i < N; i++) {
                grid[i] = new Array(N);
                for (let j = 0; j < N; j++) {
                    grid[i][j] = Math.random() > 0.7 ? 1 : 0;
                }
            }
            return grid;
        }
        function renderGrid(grid) {
            const table = document.getElementById('grid');
            table.innerHTML = '';
            for (let i = 0; i < N; i++) {
                const row = table.insertRow();
                for (let j = 0; j < N; j++) {
                    const cell = row.insertCell();
                    cell.classList.add(grid[i][j] ? 'alive' : 'dead');
                }
            }
        }
        function updateGrid(grid) {
            const newGrid = grid.map(row => row.slice());
            for (let i = 0; i < N; i++) {
                for (let j = 0; j < N; j++) {
                    const aliveNeighbors = countAliveNeighbors(grid, i, j);
                    if (grid[i][j] === 1) {
                        newGrid[i][j] = aliveNeighbors === 2 || aliveNeighbors === 3 ? 1 : 0;
                    } else {
                        newGrid[i][j] = aliveNeighbors === 3 ? 1 : 0;
                    }
                }
            }
            return newGrid;
        }
        function countAliveNeighbors(grid, x, y) {
            let count = 0;
            for (let i = -1; i <= 1; i++) {
                for (let j = -1; j <= 1; j++) {
                    if (i === 0 && j === 0) continue;
                    const newX = (x + i + N) % N;
                    const newY = (y + j + N) % N;
                    count += grid[newX][newY];
                }
            }
            return count;
        }
        function startGame() {
            intervalId = setInterval(() => {
                grid = updateGrid(grid);
                renderGrid(grid);
            }, 1000);
        }
        renderGrid(grid);
        startGame();
    </script>
</body>
</html>

Wir können außerdem auf den Button „Run HTML“ am Ende der Antwort klicken und das Game of Life direkt im Chatfenster ausführen.

Deepseek chat interface allows running HTML and JavaScript

Screenshot von der Autorin/dem Autor.

Als Nächstes habe ich das Modell gebeten, eine dynamische Website für das Spiel zu erstellen, auf der ich die Startkonfiguration auswählen kann. So sieht das Ergebnis aus – und es funktioniert nahezu reibungslos.

Dynamic game of life website.

Screenshot von der Autorin/dem Autor.

Im letzten Beispiel habe ich das Modell mit einer schweren Project-Euler-Aufgabe getestet – dem „jumping frog“-Problem. Hier ist der vom Modell generierte Code:

import numpy as np

MOD = 10**9


def matrix_power(matrix, n):
    result = np.identity(len(matrix), dtype=int)

    while n > 0:
        if n % 2 == 1:
            result = np.dot(result, matrix) % MOD

        matrix = np.dot(matrix, matrix) % MOD
        n //= 2

    return result


def fib_matrix(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1

    A = np.array([[1, 1, 1], [1, 0, 0], [0, 1, 0]], dtype=int)
    A_power = matrix_power(A, n - 3)
    initial_vector = np.array([2, 1, 1])

    return np.dot(A_power, initial_vector)[0] % MOD


def S(L):
    result = 0

    for n in range(1, L + 1):
        f_n = fib_matrix(n)
        result = (result + f_n**3) % MOD

    return result


# Compute S(10**14) % 10**9
print(S(10**14))

Dieses Skript würde ewig laufen, also habe ich das Modell um eine Optimierung gebeten und Folgendes erhalten:

import numpy as np

MOD = 10**9


def matrix_power(matrix, n):
    result = np.identity(len(matrix), dtype=int)

    while n > 0:
        if n % 2 == 1:
            result = np.dot(result, matrix) % MOD
        matrix = np.dot(matrix, matrix) % MOD
        n //= 2

    return result


def fib_matrix(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1

    A = np.array([[1, 1, 1], [1, 0, 0], [0, 1, 0]], dtype=int)
    A_power = matrix_power(A, n - 3)
    initial_vector = np.array([2, 1, 1])

    return np.dot(A_power, initial_vector)[0] % MOD


def find_pisano_period(m):
    previous, current = 0, 1
    for i in range(m * m):
        previous, current = current, (previous + current) % m
        if previous == 0 and current == 1:
            return i + 1


def S(L):
    pisano_period = find_pisano_period(MOD)
    period_sum = 0

    for n in range(1, pisano_period + 1):
        f_n = fib_matrix(n)
        period_sum = (period_sum + f_n**3) % MOD

    full_periods, remainder = divmod(L, pisano_period)
    result = (full_periods * period_sum) % MOD

    for n in range(1, remainder + 1):
        f_n = fib_matrix(n)
        result = (result + f_n**3) % MOD

    return result


# Compute S(10**14) % 10**9
print(S(10**14))

Ich habe die optimierte Version eine halbe Stunde laufen lassen, aber es kam immer noch kein Ergebnis. Auch wenn die Ansätze korrekt erscheinen, liegt die Herausforderung in der Optimierung. Angesichts der Tatsache, dass nur 328 Personen dieses Problem gelöst haben, überrascht es nicht, dass das Modell daran scheitert.

Fazit

DeepSeek-Coder-V2 ist eine bemerkenswerte Ergänzung im wachsenden Feld der Open-Source-Coding-Assistenten und liefert eine konkurrenzfähige Performance gegenüber etablierten proprietären Modellen.

Um das Maximum aus DeepSeek-Coder-V2 herauszuholen, arbeite mit klaren, präzisen Prompts. Gib den Entwicklerinnen und Entwicklern außerdem Feedback, falls dir Bugs auffallen.

Wenn du mehr über KI-Coding-Assistenten erfahren willst, empfehle ich diese DataFramed-Podcastfolge: The Future of Programming with Kyle Daigle, COO at GitHub.

Verdiene eine Top-KI-Zertifizierung

Zeige, dass du KI effektiv und verantwortungsbewusst einsetzen kannst.

Dimitri Didmanidze's photo
Author
Dimitri Didmanidze
LinkedIn
Ich bin Dimitri Didmanidze, ein Datenwissenschaftler, der zurzeit einen Master in Mathematik mit dem Schwerpunkt Maschinelles Lernen macht. Auf meinem akademischen Weg habe ich auch über die Möglichkeiten transformatorischer Modelle geforscht und an der Universität gelehrt, was mein Verständnis für komplexe theoretische Konzepte bereichert hat. Ich habe auch im Bankensektor gearbeitet, wo ich diese Prinzipien angewendet habe, um reale Datenherausforderungen zu bewältigen.
Themen
Künstliche Intelligenz

Lerne KI mit diesen Kursen!

Lernpfad

Entwicklung von KI-Anwendungen

21 Std.
Lerne, KI-gestützte Anwendungen mit den neuesten KI-Entwicklungstools zu erstellen, darunter die OpenAI API, Hugging Face und LangChain.
Details anzeigenRight Arrow
Kurs Starten
Mehr anzeigenRight Arrow