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

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 (versão completa não refinada) localmente. Recentemente, tem havido grandes Executando o Deepseek R1 671b por US$ 2.000.ótimo para uso pessoal.

modelagem

primordial DeepSeek R1 Com 720 GB de tamanho, o modelo 671B é enorme. 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
    PARAMETER num_gpu 28
    PARAMETER num_ctx 2048
    PARAMETER temperature 0.6
    TEMPLATE "<|User|>{{ .System }} {{ .Prompt }}<|Assistant|>"
    

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

    FROM /home/snowkylin/DeepSeek-R1-Q4_K_M.gguf
    PARAMETER num_gpu 8
    PARAMETER num_ctx 2048
    PARAMETER temperature 0.6
    TEMPLATE "<|User|>{{ .System }} {{ .Prompt }}<|Assistant|>"
    

    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)
    # assume you have a python environment (with anaconda or 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.<think>responder cantando</think>A 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, você poderá descobrir que o Sem pano A versão de 1,73 bits do AI é muito mais prática. Do ponto de vista prático, eu recomendaria usar esse modelo para trabalhos "mais leves" que não exijam um processo de raciocínio muito longo ou muitos diálogos 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)"
    brew install 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, " ### Anything between here and the comment below will become the contents of the drop-in file"e" ### Edits below this comment will be discarded") adicione as seguintes linhas

    [Service]
    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"  # use flash attention
    Environment="OLLAMA_KEEP_ALIVE=-1"      # keep the model loaded in memory
    

    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
pt_BRPortuguês do Brasil