Otimização de latência
Tempos de resposta mais rápidos através de texto, imagem, vídeo e modelos de fala em QwenCloud
A latência vem de diferentes fontes, dependendo da modalidade: para geração de texto, é impulsionada pela contagem de símbolos e tamanho do modelo; para geração de imagens e vídeos, por renderização de tempo e profundidade da fila de tarefas; e para fala, por tempo de inicialização de síntese e tamanho do buffer de streaming. Este guia cobre estratégias de otimização para cada modalidade, e depois mergulha mais fundo em QwenCloud recursos como cache de contexto e streaming que fornecem os ganhos mais imediatos para cargas de trabalho de texto.
Geração de texto: sete áreas para otimizar
1. Escolha o modelo certo.
O tamanho do modelo é o principal condutor da velocidade de inferência. Um modelo menor responde mais rápido e custa menos por token.
| Use o caso. | Modelo recomendado. | Por quê? |
|---|---|---|
| Raciocínio complexo, geração sem fim. | qwen3.8-max | Qualidade mais alta, mais devagar. |
| Tarefas gerais, velocidade/qualidade equilibradas. | qwen3.7-plus | Boa troca. |
| Tarefas de alto desempenho, raciocínio rápido. | qwen3.8-flash | Última flash, rápido com forte qualidade. |
| Classificação, extração, síntese | qwen3.5-flash | Rápido, econômico. |
Quando se mudar para um modelo menor, compense com mais detalhes ou exemplos de poucos tiros para manter a qualidade. Um bem-prompedado qwen3.5-flash pode combinar com um prompted frouxamente qwen3.8-max para muitas tarefas de produção.
- Dois. Reduzir o comprimento de saída.
A geração de saída é a fase mais lenta de uma chamada LLM, metade das fichas de saída, aproximadamente metade da latência total. Estratégias:
- Constrair saída de linguagem natural: Adicione instruções de comprimento explícitas ("responder em uma frase", "menos de 50 palavras") ou use exemplos de poucos tiros para demonstrar a brevidade desejada.
- Se seu modelo retornar JSON, use nomes de campos curtos.
sEm vez desentiment_analysis_result) e omitir campos opcionais. -
- Sele os limites.
max_tokenspara o comprimento de saída da tampa, oustopsequências para terminar a geração em um delimitador conhecido.
- Sele os limites.
3. Aparar fichas de entrada
Os tokens de entrada têm um impacto menor na latência do que os tokens de saída (aproximadamente 1-5% de melhoria por redução de 50%), mas eles importam em escala:
- ** Resultados de recuperação de ameixa**: em pipelines RAG, rank e filtrar pedaços por relevância antes de enviá-los para o modelo. Tire tags HTML, caldeira e elementos de navegação do conteúdo da web.
- Apenas inclua as mais recentes voltas, ou resuma a história antiga em uma mensagem condensada do sistema.
- Use exemplos de poucos tiros para absorver instruções, incluindo exemplos representativos em seu prompt, ensina ao modelo suas regras de formatação e restrições de domínio sem instruções escritas longas.
- Quatro. Consolide os pedidos.
Cada chamada da API adiciona tempo de ida e volta. Se seu fluxo de trabalho der múltiplos passos LLM sequencialmente, considere fundi-los:
- Peça ao modelo para executar todos os passos em uma única chamada e retornar resultados como um objeto JSON com campos nomeados para cada passo.
- Para processamento de vários itens, itens em lote em um único instante (como "classifique estes 10 tickets de suporte") em vez de emitir 10 chamadas separadas.
- Cinco. Correr passos em paralelo
Quando seu oleoduto tiver ramos independentes, execute-os simultaneamente. Por exemplo, se precisar de um resumo e uma tradução, demita ambos os pedidos ao mesmo tempo, em vez de esperar que um termine.
Para passos sequenciais onde um ramo é altamente previsível (como moderação de conteúdo que passa 95% do tempo), considere ** execução especulativa**: comece o próximo passo antes que o cheque termine, e descarte o resultado apenas se o cheque falhar.
Seis. Melhorar a velocidade percebida.
Mesmo quando a latência real permanece a mesma, a velocidade percebida faz uma diferença real para os usuários:
- Respostas de stream** assim os usuários vêem fichas quando chegam, em vez de esperarem pela resposta completa. Monitore a hora do primeiro token (TTFT)** como a métrica chave de desempenho de streaming. Veja [Striaming] (/developer-guides/run-and-scale/streaming).
- Se você precisar de pós-processo de saída do modelo (como traduzi-lo ou moderá-lo), transmita a saída para sua infraestrutura e encaminhar segmentos processados para a frontend incrementalmente.
- Mostrar indicadores de progresso, mostrar qual passo está sendo executado, "Buscando base de conhecimento", "Gerando resposta", para manter os usuários engajados durante fluxos de trabalho multi-passo.
O streaming e o blocing reduzem o tempo antes do usuário começar a ler, o que encurta a experiência de ponta a ponta. Indicadores de progresso são puramente psicológicos, mas igualmente importantes para a satisfação do usuário.
- 7? - 7? Pule o LLM quando puder.
Nem toda parte de uma aplicação de IA precisa de uma chamada modelo:
- Mensagens de confirmação, texto de erro e avisos padrão podem ser codificados.
- Conteúdo pré-geradoPara espaços de entrada restritos (como uma gota de categorias), gerar respostas offline e servi-los instantaneamente.
- Formatação, filtragem, ordenação e agregação são mais rápidas e confiáveis com código regular do que com LLM.
Imagem e geração de vídeo
APIs de imagem e vídeo usam filas de tarefas assíncronas, então a otimização da latência foca em reduzir o tempo de renderização e pesquisas eficientes.
Geração de imagens
- Desativar a reescrita rápida.
prompt_extend... para economizar 3-5 segundos por pedido quando você já tem alertas bem elaborados. - Use uma resolução mais baixa (como 1024x1024 em vez de 2048x2048) durante a iteração. Aumentar apenas para os ativos finais.
- Pesquisa para conclusão da tarefa com retrocesso exponencial. Comece em 3 segundos, aumente gradualmente, e defina um intervalo de 2 minutos. Veja, vamos ao vivo./developer-guides/image-generation/text-to-image#going-live) para padrões de produção.
- Várias imagens (
n=4) são gerados em paralelo, então latência é aproximadamente a mesma quen=1. Usen=1Quando não se precisa de várias variantes para evitar custos extras, já que cada imagem é faturada separadamente.
- Geração de vídeo *
- Iterar com duraçãos mais curtas (2-3 segundos) e resoluções mais baixas (480P/720P) antes de renderizar a saída final de alta resolução de comprimento.
- Desativar reescrita rápida quando suas instruções já estiverem detalhadas.
- Modo de tiro único é mais rápido que o modo multi-shot para cenas simples.
- Apresentar imagens e vídeos de referência em um CDN rápido para minimizar o tempo de upload e download.
Áudio e discurso
** Texto para falar (TTS) **
- Use a saída de streaming para ouvir áudio em milissegundos do primeiro segmento sintetizado, ao invés de esperar por todo o arquivo. Veja [streaming em tempo real] (/developer-guides/speech/realtime-streaming).
- Escolha um.
flashVariante de modelo para a menor latência em cenários interativos. - Use formatos de saída compacta (mp3, opus) para reduzir o tempo de transferência de dados.
- Para aplicações de voz com LLM, pipe a saída de texto da LLM diretamente na entrada de transmissão TTS para baixa latência de ponta a ponta.
Reconhecimento automático de fala (ASS)
- Para transcrição em tempo real, use o ponto final do WebSocket em vez da API REST. Veja [ASS em tempo real] (/developer-guides/speech/asr-realtime).
- Compacte arquivos de áudio antes de carregar para reduzir o tempo de transferência.
- Para arquivos de áudio grandes, passe uma URL em vez de dados codificados para evitar inflar a carga de solicitação.
Cache de contexto
O cache de contexto é... QwenCloudA característica de otimização de latência mais direta para modelos de texto e visão. Quando pedidos consecutivos compartilham um prefixo comum, o servidor reutiliza computação em cache em vez de reprocessar esses tokens, reduzindo o tempo para o primeiro token (TTFT) significativamente. Geração de imagens, geração de vídeo e APIs de fala usam diferentes modelos de preços e não têm um mecanismo de cache equivalente.
Como funciona
O cálculo do modelo segue da esquerda para a direita através de seu prompt. Se os primeiros N tokens de um novo pedido corresponderem a um prefixo em cache, esses N tokens são servidos do cache - apenas os restantes tokens requerem novos cálculos.
Isto significa prompt estrutura importa: coloque conteúdo estável (instruções do sistema, documentos de referência, exemplos de poucos tiros) no início, e conteúdo variável (mensagens de usuário, resultados dinâmicos de RAG) no final.
Três modos.
| Modo | Configuração | Validade do cache | - Custo de batida. |
|---|---|---|---|
| Explicidade | Adicionarcache_control Marcadores para conteúdo da mensagem |
5 minutos (retomando o sucesso) | 10% do preço de entrada. |
| Implícito. | Nenhum, ativo por padrão. | Não garantido. | 20% do preço de entrada. |
| Sessão | Adicione cabeçalho HTTP, use API Responses | 5 minutos (retomando o sucesso) | 10% do preço de entrada. |
Cache implícito requer zero mudanças de código e beneficia cada aplicação automaticamente. Use cache explícito quando precisar de acessos garantidos e preços mais baixos para o conteúdo que você controla. Use cache de sessão para chatbots multi-turnos construídos na API Responses.
Exemplo de cache explícito
Marque o conteúdo, você. want - Com o que? cache_control. O comprimento mínimo de cache é de 1024 fichas.
Python
```python
from openai import OpenAI
import os
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://maas.qwencloudapi.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen3.7-max",
messages=[
{
"role": "system",
"content": [
{
"type": "text",
"text": "You are a helpful assistant specialized in answering questions about our product documentation. Here is the full reference manual:\n\n[... long reference document ...]",
"cache_control": {"type": "ephemeral"}
}
]
},
{
"role": "user",
"content": "How do I configure SSO?"
}
]
)
print(completion.usage)
# Check completion.usage.prompt_tokens_details.cached_tokens for cache hits
```
Node.js
```javascript
import OpenAI from "openai";
const openai = new OpenAI({
apiKey: process.env.DASHSCOPE_API_KEY,
baseURL: "https://maas.qwencloudapi.com/compatible-mode/v1"
});
const completion = await openai.chat.completions.create({
model: "qwen3.7-max",
messages: [
{
role: "system",
content: [
{
type: "text",
text: "You are a helpful assistant specialized in answering questions about our product documentation. Here is the full reference manual:\n\n[... long reference document ...]",
cache_control: { type: "ephemeral" }
}
]
},
{
role: "user",
content: "How do I configure SSO?"
}
]
});
console.log(completion.usage);
// Check completion.usage.prompt_tokens_details.cached_tokens for cache hits
```
curl
```bash
curl -X POST https://maas.qwencloudapi.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3.7-max",
"messages": [
{
"role": "system",
"content": [
{
"type": "text",
"text": "You are a helpful assistant specialized in answering questions about our product documentation. Here is the full reference manual:\n\n[... long reference document ...]",
"cache_control": {"type": "ephemeral"}
}
]
},
{
"role": "user",
"content": "How do I configure SSO?"
}
]
}'
```
Em um golpe de cache, a resposta inclui cached_tokens no objeto de uso:
{
"usage": {
"prompt_tokens": 1520,
"completion_tokens": 85,
"total_tokens": 1605,
"prompt_tokens_details": {
"cached_tokens": 1480,
"cache_creation_input_tokens": 0
}
}
}
Dicas para maximizar o cache.
- Qualquer alteração no prefixo em cache, mesmo um único personagem, invalida o cache. Versão do seu sistema pede e atualiza-los intencionalmente.
- **O sistema de instruções e documentos de referência vão primeiro; entrada do usuário e contexto RAG vão por último. Isso maximiza a sobreposição entre pedidos.
- Envie pedidos dentro da janela de 5 minutos. As entradas de cache de sessão e explicidade expiram após 5 minutos de inatividade. Para aplicações de baixo tráfego, considere pedidos periódicos de manutenção viva.
Para o guia completo, incluindo a configuração de cache de sessão, modelos suportados e padrões avançados, veja Cache de contexto.
Juntando tudo
A maioria das aplicações reais se beneficiam de combinar várias dessas estratégias. Aqui está um quadro de decisão para um típico chatbot baseado em RAG:
Cambota # # Sintomas # # Ações recomendadas
| Garrafa | Sintomas | Ações recomendadas |
|---|---|---|
| Lento primeiro sinal | TTFT alto, usuário espera antes de ver qualquer saída | Activar streaming; usar cache de contexto para o prompt do sistema; mudar para um modelo mais rápido para a etapa de recuperação/roteamento |
| Geração de longa saída. | Os tons estão indo devagar, o tempo total de resposta está alto. | Reduza o comprimento de saída com instruções explícitas; use um modelo mais rápido se a qualidade permitir |
| Muitas chamadas sequenciais de LLM | Oleoduto multi-passo com latência de ponta a ponta | Mesclar passos em um único prompt; paralelizar passos independentes |
| Grande tamanho imediato. | A latência cresce com o comprimento do documento/história | Resultados de Prune RAG, resumo histórico, usar cache de contexto para evitar re-computação |
Não-texto modalidade de referência rápida
| Modalidade | Motorizador de latência primária | Otimização de topo |
|---|---|---|
| Geração de imagens | Tempo de entrega + espera na fila | Baixa resolução, desativar a reescrita rápida, a votação exponencial. |
| Geração de vídeo | Tempo de entrega (proporcional à duração e resolução) | Duração curta + baixa resolução para iteração; modo de tiro único |
| TTS | Sintese startup + transferência de dados | Saída de fluxo, modelo flash, formato comprimido (mp3/opus) |
| ASR | Tamanho do carregamento + tempo de processamento | Endpoint WebSocket para em tempo real; Entrada de URL para arquivos grandes; comprimir áudio |
Próximos passos
- [Striaming] (/developer-guides/run-and-scale/streaming- Transmita fichas para reduzir o tempo para o primeiro resultado visível.
- [Cache de contexto] (/developer-guides/run-and-scale/context-cache Modos detalhados de cache, modelos suportados e preços
- [Escolha modelos] (/developer-guides/getting-started/model-selection) — Compare capacidades de modelo, velocidade e preços
- [Texto para imagem -- indo ao vivo] (/developer-guides/image-generation/text-to-image#going-live Os padrões de produção para a geração de imagens
- [Transmissão em tempo real TTS] (/developer-guides/speech/realtime-streaming[Síntese de fala de baixa latência com streaming]
- [ASS em tempo real] (/developer-guides/speech/asr-realtime Reconhecimento de fala em tempo real via WebSocket
- [Otimização de custo] (/developer-guides/run-and-scale/cost-optimization Estratégias complementares que também melhoram a latência