Aprendizagem pessoal com IA
e orientação prática

São necessários apenas 14 GB de RAM para executar o DeepSeek-Coder V3/R1 (Q4_K_M quantised) localmente.

resumos

10 de fevereiro de 2025Suporte para DeepseekR1 e V3 em uma única GPU (24 GB de RAM) / várias GPUs e 382 GB de RAM, com acelerações de até 3 a 28 vezes.

Saudações a todos da equipe KTransformers (anteriormente conhecida como equipe do Projeto de código aberto de inferência híbrida CPU/GPU, conhecida pelo DeepSeek-V2).

KTransformadores A equipe recebeu solicitações de suporte ao DeepSeek-R1/V3 e está muito animada em anunciar que ele finalmente foi entregue!
Desculpe a demora, mas a equipe do KTransformers está preparando algo realmente incrível!


Hoje, a equipe do KTransformers tem o orgulho de anunciar não apenas o suporte ao DeepSeek-R1/V3, conforme mostrado no vídeo abaixo:

https://github.com/user-attachments/assets/ebd70bfa-b2c1-4abb-ae3b-296ed38aa285

 

  • [Updated!!!!] Local 671B DeepSeek-Coder-V3/R1. Executa sua versão Q4_K_M somente com 14 GB de memória de vídeo e 382 GB de RAM.
    • Velocidade de pré-preenchimento (tokens/s).
      • KTransfermor: 54,21 (32 núcleos) → 74,362 (caminho duplo, 2×32 núcleos) → 255,26 (kernel MoE otimizado baseado em AMX, somente V0.3) → 286,55 (uso seletivo de 6 especialistas, somente V0.3)
      • junto com llama.cpp alcançou até 10,31 tokens/s em 2×32 núcleos em comparação com o 27,79 vezes a aceleração.
    • Velocidade de decodificação (tokens/s).
      • KTransfermor: 8,73 (32 núcleos) → 11,26 (duplo, 2×32 núcleos) → 13,69 (uso seletivo de 6 especialistas, somente V0.3)
      • Em comparação com os 4,51 tokens/s do llama.cpp em 2×32 núcleos, isso atinge até Aceleração de 3,03x.

A equipe do KTransformers também apresentou uma prévia das próximas otimizações, incluindo um kernel acelerado pelo Intel AMX e métodos de ativação seletiva de especialistas, que melhorarão significativamente o desempenho. Com a versão 0.3-preview, o pré-preenchimento é de até 286 tokens/s, mais rápido do que o llama.cpp para inferência nativa! 28 vezes.
A distribuição binária já está disponível e o código-fonte será liberado assim que possível!Veja os pacotes de rodas aqui.

 

Termos de preparação

A equipe do KTransformers executou os melhores testes de desempenho (V0.2) nas seguintes configurações:

CPU: Intel (R) Xeon (R) Gold 6454S 1T RAM (2 nós NUMA)

GPU: Memória de vídeo 4090D 24G

Memória: memória de servidor DDR5-4800 padrão (1 TB)

 

Resultados de benchmarking

V0.2

configurar

  • Modelo: DeepseekV3-q4km (int4)
  • CPU: cpu_model_name: Intel (R) Xeon (R) Gold 6454S, 32 núcleos por caminho, 2 caminhos, 2 nós numéricos
  • GPU: Memória de vídeo 4090D 24G
  • Teste da equipe KTransformers após aquecimento completo

Consumo de memória.

  • Único: 382 G de RAM, pelo menos 14 GB de VRAM
  • Duplo: 1T de RAM, pelo menos 14GB de VRAM

Resultados de benchmarking

O cenário "6 especialistas" faz parte da visualização da V0.3.

| Prompt

(500 tokens) Dual Ktrans (6 especialistas) Dual Ktrans (8 especialistas) Ktrans único (6 especialistas) Ktrans único (8 especialistas) llama.cpp (8 especialistas)
Token/s de pré-preenchimento 97.32 82.94 65.14 54.21 10.31
Decodificar token/s 13.69 12.208 10.303 8.73 4.51

Aumentar a velocidade de decodificação em até 3,03 vezesAumento máximo na velocidade de pré-enchimento 9,44 vezes. Parece que o KTransformers não é tão bom quanto o pré-populado em termos de aceleração da decodificação, e ainda há muito espaço para otimização da decodificação.

V0.3 - Visualização

configurar

  • Modelo: DeepseekV3-BF16 (quantificado on-line como int8 para CPU, int4 para GPU)
  • CPU: cpu_model_name: Intel (R) Xeon (R) Gold 6454S, 32 núcleos por caminho, 2 caminhos, 2 nós numéricos
  • GPU: (1~4)x 4090D 24GVRAM (prompts mais longos exigem mais memória)

Consumo de memória.

  • 644 GB de RAM, pelo menos 14 GB de memória gráfica

Resultados de benchmarking

Duração do prompt 1K 2K 4K 8K
KTrans (8 especialistas) Token/s de pré-preenchimento 185.96 255.26 252.58 195.62
KTrans (6 especialistas) Token/s de pré-preenchimento 203.70 286.55 271.08 207.20

O KTrans V0.3 é mais rápido do que o KTrans V0.2 no pré-preenchimento. 3,45 vezesEle é mais rápido do que o llama.cpp. 27,79 vezes. Esse aumento na velocidade de pré-preenchimento é realmente impressionante e parece que a KTransformers se esforçou bastante na otimização do pré-preenchimento.
A velocidade de decodificação é a mesma do KTrans V0.2 (versão de 6 especialistas), portanto, é omitida. Parece que a versão V0.3 se concentra principalmente em melhorias na velocidade de pré-preenchimento.

A principal aceleração vem de

  • Conjunto de instruções Intel AMX e layout de memória amigável ao cache projetado pela equipe da KTransformers
  • Estratégia de seleção de especialistas para selecionar menos especialistas com base em resultados de perfis off-line de dados fora do domínio

De acordo com a equipe do KTransformers para DeepSeekV2, DeepSeekV3 e DeepSeekR1, o
Ao reduzir ligeiramente o número de especialistas ativados na inferência, o
A qualidade da saída não é alterada. Mas a velocidade de decodificação e pré-preenchimento
será mais rápido, o que é animador. Portanto, a demonstração da equipe do KTransformers tira proveito dessa descoberta
 Parece que a "estratégia de seleção de especialistas" é a chave para acelerar, mas como garantir que a qualidade do resultado não se deteriore precisa de mais testes e verificações.

 

Como funciona

Demonstração V0.2

Versão de caminho único (32 núcleos)

A equipe do KTransformers bate-papo local O comando de teste é:

git clone https://github.com/kvcache-ai/ktransformers.git
cd ktransformers
numactl -N 1 -m 1 python . /ktransformers/local_chat.py --model_path  --gguf_path  --prompt_file  --cpu_infer 33 -- cache_lens 1536

pode ser um caminho local ou um conjunto de caminhos de um hugging face on-line, por exemplo, deepseek-ai/DeepSeek-V3. Se você tiver problemas de conexão on-line, tente usar um espelho (hf-mirror.com).

também pode ser um caminho on-line, mas como ele é grande, a equipe do KTransformers recomenda que você faça o download e quantifique o modelo no formato desejado!

comando numactl -N 1 -m 1 Projetado para evitar transferências de dados entre nós NUMA

Versão Dual-Path (64 núcleos)

Antes de instalar (usando install.sh ou make dev_install), por meio de exportar USE_NUMA=1 Definição de variáveis de ambiente USE_NUMA=1 (Se já estiver instalado, reinstale com essa variável de ambiente definida)

A equipe do KTransformers bate-papo local O comando de teste é:

git clone https://github.com/kvcache-ai/ktransformers.git
cd ktransformers
export USE_NUMA=1
make dev_install # or sh . /install.sh
python . /ktransformers/local_chat.py --model_path  --gguf_path  --prompt_file  --cpu_infer 65 -- cache_lens 1536

tem o mesmo significado. No entanto, como a equipe do KTransformers usa uma via de mão dupla, ele será cpu_infer Definido como 65

Demonstração V0.3

Versão Dual-Path (64 núcleos)

A equipe do KTransformers bate-papo local O comando de teste é:

wget https://github.com/kvcache-ai/ktransformers/releases/download/v0.1.4/ktransformers-0.3.0rc0+cu126torch26fancy-cp311-cp311- linux_x86_64.whl
pip install . /ktransformers-0.3.0rc0+cu126torch26fancy-cp311-cp311-linux_x86_64.whl
python -m ktransformers.local_chat --model_path  --gguf_path  --prompt_file  -cpu_infer 65 - -cache_lens 1536

O significado dos parâmetros é o mesmo que na V0.2. No entanto, como a equipe do KTransformers usa um caminho duplo, os parâmetros cpu_infer Definido como 65

 

Algumas explicações

  1. A equipe do KTransformers também queria utilizar ainda mais os dois nós NUMA na CPU Xeon Gold.
    Para evitar o custo da transferência de dados entre os nós, a equipe do KTransformers está
    A matriz de chaves é "copiada" em ambos os nós, o que consome mais memória, mas acelera o processo de pré-população e decodificação.
    No entanto, esse método usa muita memória e é lento no carregamento de pesos, portanto, seja paciente enquanto ele carrega!
    A equipe do KTransformers otimizará essa enorme sobrecarga de memória. Fique atento~ Essa "cópia" da matriz pode acelerar o processo, mas o espaço ocupado pela memória é um problema real, portanto, estamos ansiosos para ver o que a equipe do KTransformers vai criar no futuro.
  2. parâmetro de comando --cpu_infer 65 Especifique o número de núcleos a serem usados (mais do que o número de núcleos físicos é suficiente, o
    Mas mais não é melhor. Basta ajustá-lo para um pouco menos do que o número real de núcleos)
  3. Por que a inferência híbrida CPU/GPU?
    DeepSeek O algoritmo MLA é intensivo em termos de computação. Embora seja possível executá-los inteiramente na CPU, a transferência do cálculo pesado para a GPU pode melhorar drasticamente o desempenho. Com a CPU lidando com o cálculo especializado e a GPU lidando com o MLA/KVCache, essa estratégia de inferência híbrida parece inteligente, aproveitando ao máximo a CPU e a GPU.
  4. De onde vem o aumento da velocidade?
    • Descarga de especialista: ao contrário das descargas tradicionais baseadas em camada ou KVCache (como visto em llama.cpp), a equipe do KTransformers descarrega a computação especializada para a CPU e o MLA/KVCache para a GPU, o que se encaixa perfeitamente na arquitetura do DeepSeek para obter eficiência ideal.
    • Otimização do Intel AMX - O kernel acelerado pelo AMX da equipe do KTransformers foi cuidadosamente ajustado para ser executado várias vezes mais rápido do que a implementação existente do llama.cpp. A equipe do KTransformers planeja abrir o código-fonte desse kernel após a limpeza e está considerando contribuir com o código para o llama.cpp. A adição do conjunto de instruções AMX parece ser um dos principais fatores para o aumento de velocidade do KTransformers.
  5. Por que CPUs Intel?
    Atualmente, a Intel é o único fornecedor de CPU que oferece suporte a algo como a instrução AMX, que oferece um desempenho significativamente melhor do que a alternativa somente AVX. Parece que as CPUs da Intel são o caminho a seguir quando se trata de obter o melhor desempenho dos KTransformers.
CDN
Não pode ser reproduzido sem permissão:Chefe do Círculo de Compartilhamento de IA " São necessários apenas 14 GB de RAM para executar o DeepSeek-Coder V3/R1 (Q4_K_M quantised) localmente.

Chefe do Círculo de Compartilhamento de IA

O Chief AI Sharing Circle se concentra no aprendizado de IA, fornecendo conteúdo abrangente de aprendizado de IA, ferramentas de IA e orientação prática. Nosso objetivo é ajudar os usuários a dominar a tecnologia de IA e explorar juntos o potencial ilimitado da IA por meio de conteúdo de alta qualidade e compartilhamento de experiências práticas. Seja você um iniciante em IA ou um especialista sênior, este é o lugar ideal para adquirir conhecimento, aprimorar suas habilidades e realizar inovações.

Entre em contato conosco
pt_BRPortuguês do Brasil