Ir para o conteúdo principal

Servindo Modelos Qwen no Databricks

Serving Qwen Models on Databricks

Published: March 28, 2025

Produto6 min de leitura

Summary

  • Implantar Modelos Qwen no Databricks adaptando-os para a infraestrutura baseada em Llama.
  • Aproveitar o Serviço de Alta Performance com endpoints de baixa latência e alto throughput.
  • Seguir um Fluxo de Trabalho Simples para converter, registrar e servir modelos Qwen de forma eficiente.

Os modelos Qwen, desenvolvidos pela Alibaba, mostraram um desempenho forte tanto em tarefas de conclusão de código quanto de instrução. Neste blog, mostraremos como você pode registrar e implantar modelos Qwen no Databricks usando uma abordagem semelhante à das arquiteturas baseadas em Llama. Ao seguir esses passos, você pode aproveitar os pontos finais do modelo de base (Provisioned Throughput) do Databricks, que se beneficiam de baixa latência e alta taxa de transferência.

Índice

  1. Motivação: Por que Servir Modelos Qwen no Databricks?
  2. A Ideia Central
  3. Implementação: Passeio Guiado pelo Código Anotado
  4. Desempenho e Limitações
  5. Resumo e Próximos Passos

Motivação: Por que Servir Modelos Qwen no Databricks?

Para muitas cargas de trabalho corporativas, o Databricks é uma plataforma única para treinar, registrar e servir grandes modelos de linguagem (LLMs). Com o Databricks Mosaic AI Model Serving, é possível implantar facilmente modelos ajustados ou básicos e utilizá-los para tarefas de inferência em tempo real ou em lote.

A recentemente lançada série Qwen 2.5 de modelos oferece um forte desempenho em tarefas de conclusão de código e instrução. Modelos Qwen 2.5 no momento de seu lançamento superaram modelos de tamanho similar em benchmarks padrão como MMLU, ARC-C, MATH, HumanEval, e benchmarks multilíngues como Multi-Exam e Multi-Understanding. Modelos Qwen 2.5 Coder mostram ganhos similares em benchmarks de codificação. Isso pode fornecer aos clientes uma forte motivação para implantar esses modelos no Databricks Model Serving para potencializar seus casos de uso.

Servir um modelo Qwen no Databricks envolve quatro etapas:

  1. Execute um notebook para converter os arquivos do modelo Qwen para serem compatíveis com a arquitetura Llama e o serviço de modelo Databricks
  2. Registre o modelo Qwen no Catálogo Unity
  3. Implantou o modelo registrado no Databricks Foundation Model Serving
  4. Realize testes de qualidade na implantação, como testes manuais ou execução de benchmarks padrão diretamente contra o endpoint

A Ideia Central

O serviço de modelos da fundação Databricks oferece desempenho otimizado para modelos como os modelos Llama da Meta. Os clientes podem implantar esses modelos com throughput provisionado e alcançar baixa latência e alto throughput. Embora a estrutura do modelo subjacente dos modelos Qwen seja muito semelhante à estrutura dos modelos Llama, são necessárias algumas modificações para aproveitar a infraestrutura de serviço de modelo do Databricks. As etapas abaixo explicam como os clientes podem fazer as modificações necessárias.

Implementação: Passeio Guiado pelo Código Anotado

Parte 1) Reescreva os pesos e a configuração de Qwen para serem consistentes com os modelos Llama.

As etapas em modify_qwen.py pegam um modelo Qwen2.5 e o reformulam para ser consistente com a arquitetura Llama que é otimizada para throughput provisionado no Databricks. Aqui estão as principais etapas do código:

  1. Carregar Qwen State Dict: Colete .safetensors do diretório original do Qwen.
  2. Copiar & Ajustar Pesos: Insira vieses zero para saídas de atenção onde a Llama espera por eles.
  3. Reescreva a Configuração: Atualize campos como "architectures", "model_type" para "llama", e remova as flags específicas de Qwen.
  4. Copiar Arquivos do Tokenizador: Certifique-se de trazer o tokenizer.json, merges.txt, e assim por diante.
  5. Criar Pasta de Saída Final: Os arquivos no novo diretório fazem parecer um modelo Llama típico.

No final desta etapa, você tem um modelo Qwen compatível com Llama. Você pode carregar o modelo no vLLM e ele deve tratá-lo como um modelo Llama e ser capaz de gerar código ou seguir instruções, dependendo de qual modelo você usou.

Dica: Você pode usar o huggingface_hub.snapshot_download para buscar um dos modelos Qwen, como o Qwen/Qwen2.5-Coder-7B-Instruct do Hugging Face para um diretório antes de realizar a conversão.

Parte 2) Registrar e Servir Qwen no Databricks

Em seguida, vamos nos concentrar em como registrar e servir o modelo “Qwen como Llama” no Databricks. Isso é gerenciado por register_qwen.py. As etapas aqui garantem que o modelo tenha a configuração que o serviço de modelo espera para um modelo Llama. As etapas chave:

  1. Especificando o caminho para o modelo convertido de antes.
  2. Modificando as configurações do tokenizer (especialmente removendo chat_template e definindo tokenizer_class).
  3. Ajustando config.json para refletir os comprimentos de sequência compatíveis com Llama.
  4. Atualizando o modelo com metadados semelhantes ao Llama antes de registrar.
  5. Registrando o modelo com o MLflow, para que possa ser servido em um endpoint de GPU.

Uma vez que este notebook é executado, o modelo será registrado no Catálogo Unity, navegue até o modelo e clique em “Servir este modelo” para configurar o endpoint. Você deve ver a opção de configurar o endpoint com entrada provisionada em diferentes taxas de tokens/segundo.

Testando o Endpoint

Uma vez que o endpoint está pronto, você pode realizar alguns testes básicos para verificar se está funcionando corretamente. Suponha que tenhamos implantado o modelo Qwen2.5-Coder-7B após realizar a conversão e registro acima. Este modelo é capaz de completar um pedaço de código ou realizar preenchimento no meio. Vamos usá-lo para completar uma simples função de ordenação. No menu suspenso "Use", clique em "Query" e insira a seguinte solicitação:

O texto na resposta contém o restante da implementação:

Para uma abordagem mais quantitativa, você poderia gerar conclusões para as tarefas HumanEval. Em seguida, execute sua avaliação para obter a métrica pass@1 e compare com os resultados publicados.

Desempenho e Limitações

  1. Formatação Manual de Chat
    Como removemos o modelo de chat integrado do Qwen, você deve formatar manualmente as mensagens do sistema/usuário/assistente em seu código cliente. Isso garante que o modelo ainda possa interpretar corretamente as viradas de conversa.
  2. Max Position Embeddings
    Nós definimos max_position_embeddings para 16000 tokens para se adequar a certas restrições do Databricks. Se Qwen originalmente suportava mais, você pode perder algum comprimento máximo de contexto. No entanto, você ainda ganhará suporte para throughput provisionado.

Resumo e Próximos Passos

Embora o Databricks não suporte diretamente os modelos Qwen no provisionamento de throughput de serviço de modelo hoje, o método acima permite que você registre e sirva esses modelos com sucesso, alinhando-os para serem compatíveis com a arquitetura dos modelos Llama. Esta solução alternativa é particularmente útil se a sua equipe requer as capacidades do Qwen, mas também deseja a conveniência dos endpoints de serviço de modelo Databricks e do throughput provisionado.

Ponto Principal

  • Os modelos Qwen e Llama compartilham semelhanças arquitetônicas suficientes para que, com algumas modificações menores (nomeadamente, na configuração do tokenizador e nos metadados do modelo), a infraestrutura de serviço de modelo do Databricks possa servir prontamente os modelos Qwen usando throughput provisionado.

Considerações Futuras

  • Encorajamos você a ficar atento ao suporte oficial do Qwen no serviço de modelos do Databricks.
  • Avalie o excesso de desempenho ao limitar forçadamente o tamanho do contexto.
  • Se você depende de prompts de chat, lembre-se de formatar manualmente seus prompts no lado do cliente.

Agradecimentos

  • hiyouga's llamafy_qwen.py pelo exemplo inicial que forneceu a base para a conversão Qwen.
  • A equipe de engenharia do Databricks por esclarecer as restrições internas de serviço.
  • Todos os membros da comunidade que testaram e refinaram a abordagem.

 

(This blog post has been translated using AI-powered tools) Original Post

Nunca perca uma postagem da Databricks

Inscreva-se nas categorias de seu interesse e receba as últimas postagens na sua caixa de entrada