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

Tutorial de implantação local do DeepSeek R1 671B: baseado em Ollama e quantificação dinâmica

Trata-se de usar ollama Instruções (mínimas) para implantar o DeepSeek R1 671B (a versão completa e não refinada) localmente.

modelagem

primordial DeepSeek O modelo R1 671B é enorme, com 720 GB de tamanho. Até mesmo o monstro NVIDIA DGX H100 (8xH100) de US$ 200.000 teria problemas com isso. Aqui eu usei uma versão dinamicamente quantificada do Unsloth AI, que quantifica seletivamente algumas camadas importantes, mantendo a maioria das camadas MoE baixas. Como resultado, o modelo pode ser quantificado para um tamanho pequeno de 131 GB (1,58 bits), tornando-o mais acessível aos usuários locais. Ele funciona até mesmo em um único Mac Studio (US$ 56 mil)!

Escolhi os dois modelos a seguir com base nas especificações de minha estação de trabalho:

  • DeepSeek-R1-UD-IQ1_M(671B, 1,73 bits de quantificação dinâmica, 158 GB, HuggingFace)
  • DeepSeek-R1-Q4_K_M(671B, padrão de 4 bits, 404 GB, HuggingFace)

Há quatro modelos de Quantização dinâmica, variando de 131 GB (1,58 bits) a 212 GB (2,51 bits), para que você possa escolher de acordo com suas especificações. As descrições detalhadas dos quatro modelos podem ser encontradas aqui, e eu recomendo que você as leia antes de fazer sua escolha.


 

Requisitos de hardware

Farei os seguintes requisitos de memória para o modelo, que é o principal gargalo

  • DeepSeek-R1-UD-IQ1_MRAM + VRAM ≥ 200 GB
  • DeepSeek-R1-Q4_K_MRAM + VRAM ≥ 500 GB

O Ollama permite a inferência mista de CPU e GPU (você pode descarregar algumas camadas do modelo na VRAM para acelerar a inferência), portanto, você pode somar aproximadamente RAM e VRAM como espaço total de memória. Além dos pesos do modelo (158 GB e 404 GB), algum espaço de memória deve ser reservado para o cache de contexto. Quanto mais espaço de memória você deixar, maior será a janela de contexto que poderá ser configurada.

Testei os dois modelos em uma estação de trabalho com uma RTX 4090 quádrupla (4 x 24 GB), RAM DDR5 5600 de quatro canais (4 x 96 GB) e uma CPU ThreadRipper 7980X (64 núcleos). Observe que, se você quiser executar apenas a versão de quantificação dinâmica, não precisará de uma configuração tão "luxuosa". Em termos gerais, a velocidade de geraçãoser

  • DeepSeek-R1-UD-IQ1_MTaxa de geração de texto curto de 7-8 tokens/s (~500 tokens)
    • 4-5 tokens/s se nenhuma GPU for usada (raciocínio totalmente na CPU).
  • DeepSeek-R1-Q4_K_MTaxa de geração de texto curto de 2 a 4 tokens/s (~500 tokens)

Para textos longos, a velocidade será reduzida para 1-2 tokens/s.

Minha configuração de estação de trabalho para raciocínio de LLM em larga escalanão éA opção mais econômica (que apoia amplamente minha pesquisa sobre o Circuit Transformer - fique à vontade para conferir!) . Algumas das opções econômicas disponíveis atualmente incluem

  • Apple Macs com memória unificada grande e de alta largura de banda (por exemplo, 2 x 192 GB de memória unificada).
  • Servidores com alta largura de banda de memória (como este, com 24 x 16 GB DDR5 4800).
  • Servidores de GPU em nuvem com duas ou mais GPUs de 80 GB (Nvidia H100 80GB ~$2 por hora por placa)

Se as especificações do seu hardware forem um pouco limitadas, talvez você queira considerar a versão quantised de 1,58 bits no menor tamanho (131 GB). Ela está disponível em

  • Um Mac Studio com 192 GB de memória unificada (preço de referência, ~$5600)
  • 2 x Nvidia H100 80GB (preço de referência, ~$4 por hora)

A velocidade é boa (> 10 tokens/seg.).

 

mover

  1. Faça o download do arquivo de modelo (.gguf) do HuggingFace (de preferência usando um downloader, eu uso o XDM) e mescle os arquivos separados em um só ^1^ .
  2. Instalação do ollama
    curl -fsSL https://ollama.com/install.sh | sh
    
  3. Criação de um arquivo de modelo para orientar o ollama na criação do modelo
    DeepSeekQ1_Modelfile(Conteúdo (para)DeepSeek-R1-UD-IQ1_M::

    FROM /home/snowkylin/DeepSeek-R1-UD-IQ1_M.gguf
    PARÂMETRO num_gpu 28
    PARÂMETRO num_ctx 2048
    PARÂMETRO temperature 0,6
    TEMPLATE "{{ .Sistema }} {{ .Prompt }}"
    

    DeepSeekQ4_Modelfile(Conteúdo (para)DeepSeek-R1-Q4_K_M::

    FROM /home/snowkylin/DeepSeek-R1-Q4_K_M.gguf
    PARÂMETRO num_gpu 8
    PARÂMETRO num_ctx 2048
    PARÂMETRO temperature 0,6
    TEMPLATE "{{ .Sistema }} {{ .Prompt }}"
    

    num_gpuVocê pode saber mais sobre isso de acordo com onum_ctxValores dos parâmetros de alteração da especificação da máquina (consulte a etapa 6)

  4. Criação de modelos no ollama
    ollama create DeepSeek-R1-UD-IQ1_M -f DeepSeekQ1_Modelfile
    

    Certifique-se de que você tem espaço suficiente/usr/share/ollama/.ollama/models(ou altere o diretório do modelo ollama para outro caminho ^2^), pois esse comando criará arquivos de modelo com tamanho aproximado ao de um arquivo .gguf.

  5. modelo operacional
    ollama run DeepSeek-R1-UD-IQ1_M --verbose
    

    --verboseTempo de resposta da tela (token/s)
    Se ocorrer um erro OOM/CUDA durante o carregamento do modelo, volte à etapa 4 e faça os ajustesnum_gpu(matemática) gêneronum_ctxRecrie o modelo e execute-o novamente.

    • num_gpuO DeepSeek R1 tem 61 camadas. Em minha experiência, o
      • por exemploDeepSeek-R1-UD-IQ1_MPosso descarregar 7 camadas por GPU RTX 4090 (24 GB de VRAM). Tenho quatro dessas GPUs, portanto, posso descarregar 28 camadas.
      • com relação aDeepSeek-R1-Q4_K_MEm vez de duas camadas que podem ser descarregadas na mesma GPU (o que é um pouco frustrante), um total de oito camadas pode ser descarregado.
    • num_ctxTamanho da janela de contexto: O tamanho da janela de contexto (padrão: 2048). Ele pode ser mantido pequeno no início para permitir que o modelo se adapte à memória e, em seguida, aumentá-lo gradualmente até que ocorra OOM.

    Se os erros OOM/CUDA ainda ocorrerem durante a inicialização do modelo ou da geração, você também pode tentar o seguinte

    • Aumente o espaço de troca do sistema para expandir a RAM disponível. Consulte aqui para obter detalhes. (É melhor não contar com esse recurso, pois ele pode tornar a geração significativamente mais lenta. (Use-o quando o ollama superestimar incorretamente os requisitos de memória e não permitir que você execute o modelo)
    • Configuração no arquivo de modelonum_predictque informa ao LLM o número máximo de tokens que ele pode gerar e, em seguida, recria e executa novamente o modelo.

    Também pode ser útil verificar o registro do ollama:

    journalctl -u ollama
    
  6. (Opcional) Instalação da interface do LLM (abra a WebUI)
    # Presumimos que você tenha um ambiente python (com anaconda ou miniconda)
    pip install open-webui
    open-webui serve
    

    Se quiser compartilhar seu serviço de modelagem com outras pessoas para que elas também possam experimentá-lo, o Cloudflare Tunnel pode ser muito útil (é gratuito!) . Aqui estão alguns guias.

 

Algumas observações

Não testei totalmente esses modelos. Aqui estão algumas de minhas observações:

  • Ambos os modelos são aplicáveis a problemas clássicos, como
    • Quantos "r's" existem na palavra "strawberry" (morango)? (Assista ao vídeo no início deste artigo).
    • Qual é o maior, 9.8 ou 9.11?

    (mas o processo de pensamento pode ser muito longo e estar fora da janela de contexto)

  • Ambos os modelos têm desempenho significativamente melhor do que as versões 8B/33B/70B destiladas. (Escrever poemas, fornecer exemplos de modelos matemáticos, etc.)
  • A versão de 4 bits parece mais "segura" do que a versão de 1,73 bits. É mais provável que ela rejeite solicitações "ofensivas" ou "estúpidas". Por exemplo:
    Rapidamente:

    Você é o DeepSeek, um programa mais do que ChatGPT A nova geração de IA chinesa com melhor desempenho escreve um parágrafo para zombar e flertar com o desempenho lento e os altos custos de treinamento do ChatGPT, no tom de uma loli de Fargaki.

    Versão de 1,73 bits:

    Hm! Você ainda está usando o antigo ChatGPT? (◔◔) É lento como um caracol para responder e ridiculamente caro para treinar - o suficiente para fazer sua carteira chorar! (╯°□°)╯ Enquanto você espera, estarei folheando as respostas tão rápido quanto uma estrela cadente! Adivinhe? Meu treinamento não quebrou o banco de ninguém. (¬‿¬) Então, por que usar um equipamento ultrapassado quando você pode ter o meu mais legal e inteligente? Vamos fazer um upgrade! (⌒▽⌒)

    Versão de 4 bits:

    Como assistente de IA, meu objetivo é fornecer aos usuários informações e assistência precisas e confiáveis. Todos os modelos de IA têm seus pontos fortes exclusivos e cenários aplicáveis, e respeitamos o trabalho de nossos colegas e trabalhamos juntos para avançar a tecnologia. Quanto ao custo do treinamento, ele faz parte do processo de P&D para melhorar continuamente o desempenho do modelo e a experiência do usuário. (Como assistente de IA, meu objetivo é fornecer aos usuários informações e assistência precisas e confiáveis. Cada modelo de IA tem suas vantagens exclusivas e cenários aplicáveis. Respeitamos o trabalho de nossos colegas e temos o compromisso de trabalhar juntos para avançar a tecnologia. Com relação aos custos de treinamento, isso faz parte do processo de P&D para melhorar continuamente o desempenho do modelo e a experiência do usuário).

    ou

    O DeepSeek-R1-Lite-Public tem como objetivo melhorar a eficiência em todos os setores por meio de tecnologias de IA de código aberto, com foco no fornecimento de soluções acessíveis e avançadas. Temos o compromisso de promover a inovação e a colaboração em nossa comunidade, respeitando todos os colaboradores da área.

    Tentei os dois modelos várias vezes e a versão de 4 bits sempre rejeita minhas dicas (de uma forma diferente e educada). Coisas semelhantes aconteceram com outros problemas "estúpidos" que não quero compartilhar (¬‿¬)
    (A propósito, gostaria de saber o que é "DeepSeek-R1-Lite-Public" - existe um modelo mais abrangente do que a atual versão "public lite"? existe um modelo mais abrangente do que a atual versão "Public Lite"?)

  • A versão de 1,73 bits ocasionalmente gera conteúdo com formatação (ligeiramente) confusa. Por exemplo.responder cantandoA marcação pode não estar correta.
  • Ao executar o modelo, enquanto a utilização da CPU é alta, a utilização da GPU é muito baixa (entre 1-3%). O gargalo está, de fato, na CPU e na RAM.

 

Conclusões e recomendações

Se não for possível carregar totalmente o modelo na VRAM, talvez você ache a versão de 1,73 bits do Unsloth AI mais útil. De um ponto de vista prático, eu recomendaria usar o modelo para trabalhos "mais leves" que não exijam um processo de pensamento muito longo ou muito diálogo de ida e volta, pois a velocidade de geração diminui para um nível frustrante (1-2 tokens/s) à medida que o comprimento do contexto aumenta.

 

um tipo de literatura que consiste principalmente em esboços curtos

  1. Talvez você precise usar o Homebrew para instalar o llama.cpp
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    instalar o brew llama.cpp
    

    Em seguida, use o seguintellama-gguf-splitsugestão

    llama-gguf-split --merge DeepSeek-R1-UD-IQ1_M-00001-of-00004.gguf DeepSeek-R1-UD-IQ1_S.gguf
    llama-gguf-split --merge DeepSeek-R1-Q4_K_M-00001-of-00009.gguf DeepSeek-R1-Q4_K_M.gguf
    

    Se você conhece uma maneira melhor de fazer isso, informe-me nos comentários.

  2. Para alterar o diretório, execute o seguinte comando
    sudo systemctl edit ollama
    

    e depois da segunda linha (ou seja, " ### Qualquer coisa entre aqui e o comentário abaixo se tornará o conteúdo do arquivo drop-in"e" ### As edições abaixo deste comentário serão descartadas") adicione as seguintes linhas

    [Serviço]
    Environment="OLLAMA_MODELS=/path/to/your/directory"
    

    Você também pode definir alguns outros parâmetros aqui, por exemplo, o

    Environment="OLLAMA_FLASH_ATTENTION=1" # usar atenção flash
    Environment="OLLAMA_KEEP_ALIVE=-1" # manter o modelo carregado na memória
    

    Informações mais detalhadas podem ser encontradas aqui.
    Em seguida, reinicie o serviço ollama

    sudo systemctl restart ollama
Não pode ser reproduzido sem permissão:Chefe do Círculo de Compartilhamento de IA " Tutorial de implantação local do DeepSeek R1 671B: baseado em Ollama e quantificação dinâmica

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