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.
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:
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.
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:
.safetensors
do diretório original do Qwen."architectures"
, "model_type"
para "llama"
, e remova as flags específicas de Qwen.tokenizer.json
, merges.txt
, e assim por diante.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.
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:
chat_template
e definindo tokenizer_class
).config.json
para refletir os comprimentos de sequência compatíveis com Llama.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.
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.
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.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
Considerações Futuras
(This blog post has been translated using AI-powered tools) Original Post