Realize operações de implementação para o GKE Inference Gateway


Esta página mostra como realizar operações de implementação incremental, que implementam gradualmente novas versões da sua infraestrutura de inferência para o GKE Inference Gateway. Esta entrada permite-lhe fazer atualizações seguras e controladas à sua infraestrutura de inferência. Pode atualizar nós, modelos base e adaptadores LoRA com uma interrupção mínima do serviço. Esta página também fornece orientações sobre a divisão do tráfego e as reversões para garantir implementações fiáveis.

Esta página destina-se a administradores de contas e identidades do GKE e a programadores que pretendam realizar operações de implementação para o GKE Inference Gateway.

Os seguintes exemplos de utilização são suportados:

Atualize uma implementação de nós

As atualizações de nós migram em segurança as cargas de trabalho de inferência para novo hardware de nós ou configurações de aceleradores. Este processo ocorre de forma controlada sem interromper o serviço de modelos. Use atualizações de nós para minimizar a interrupção do serviço durante as atualizações de hardware, as atualizações de controladores ou a resolução de problemas de segurança.

  1. Crie um novo InferencePool: implemente um InferencePool configurado com as especificações de hardware ou de nó atualizadas.

  2. Divida o tráfego através de um HTTPRoute: configure um HTTPRoute para distribuir o tráfego entre os recursos InferencePool existentes e novos. Use o campo weight em backendRefs para gerir a percentagem de tráfego direcionada para os novos nós.

  3. Manter uma InferenceObjective consistente: mantenha a configuração InferenceObjective existente para garantir um comportamento uniforme do modelo nas duas configurações de nós.

  4. Mantenha os recursos originais: mantenha os nós InferencePool e os nós originais ativos durante a implementação para permitir reversões, se necessário.

Por exemplo, pode criar um novo InferencePool denominado llm-new. Configure este conjunto com a mesma configuração de modelo que o seu llm existenteInferencePool. Implemente o pool num novo conjunto de nós no cluster. Use um objeto HTTPRoute para dividir o tráfego entre o llm original e o novo llm-new InferencePool. Esta técnica permite-lhe atualizar incrementalmente os nós do modelo.

O diagrama seguinte ilustra como o GKE Inference Gateway implementa uma atualização de nós.

Processo de implementação da atualização do nó
Figura: Processo de implementação da atualização de nós

Para implementar uma atualização de nós, siga estes passos:

  1. Guarde o seguinte manifesto de exemplo como routes-to-llm.yaml:

    apiVersion: gateway.networking.k8s.io/v1
    kind: HTTPRoute
    metadata:
      name: routes-to-llm
    spec:
      parentRefs:
        - name: my-inference-gateway
          group: inference.networking.k8s.io
          kind: InferenceGateway
      rules:
        backendRefs:
        - name: llm
          group: inference.networking.k8s.io
          kind: InferencePool
          weight: 90
        - name: llm-new
          group: inference.networking.k8s.io
          kind: InferencePool
          weight: 10
    
  2. Aplique o manifesto de exemplo ao seu cluster:

    kubectl apply -f routes-to-llm.yaml
    

O grupo llm InferencePool original recebe a maior parte do tráfego, enquanto o grupo llm-new InferencePool recebe o resto. Aumente gradualmente o peso do tráfego para o llm-new InferencePool para concluir a implementação da atualização do nó.

Implemente um modelo base

As atualizações do modelo base são implementadas em fases para um novo MDL/CE base, mantendo a compatibilidade com os adaptadores LoRA existentes. Pode usar implementações de atualizações do modelo base para atualizar para arquiteturas de modelos melhoradas ou resolver problemas específicos do modelo.

Para implementar uma atualização do modelo base:

  1. Implementar nova infraestrutura: crie novos nós e um novo InferencePool configurado com o novo modelo base que escolheu.
  2. Configurar a distribuição de tráfego: use um HTTPRoute para dividir o tráfego entre o InferencePool existente (que usa o modelo base antigo) e o novo InferencePool (que usa o novo modelo base). O campo backendRefs weight controla a percentagem de tráfego atribuída a cada conjunto.
  3. Manter a integridade da InferenceModel: mantenha a configuração da InferenceModel inalterada. Isto garante que o sistema aplica os adaptadores LoRA de forma consistente em ambas as versões do modelo base.
  4. Preserve a capacidade de reversão: mantenha os nós originais e InferencePool durante a implementação para facilitar uma reversão, se necessário.

Cria um novo InferencePool com o nome llm-pool-version-2. Este conjunto implementa uma nova versão do modelo base num novo conjunto de nós. Ao configurar um HTTPRoute, conforme mostrado no exemplo fornecido, pode dividir o tráfego de forma incremental entre o llm-pool original e o llm-pool-version-2. Isto permite-lhe controlar as atualizações do modelo base no seu cluster.

Para implementar uma atualização do modelo base, siga estes passos:

  1. Guarde o seguinte manifesto de exemplo como routes-to-llm.yaml:

    apiVersion: gateway.networking.k8s.io/v1
    kind: HTTPRoute
    metadata:
      name: routes-to-llm
    spec:
      parentRefs:
        - name: my-inference-gateway
          group: inference.networking.k8s.io
          kind: InferenceGateway
      rules:
        backendRefs:
        - name: llm-pool
          group: inference.networking.k8s.io
          kind: InferencePool
          weight: 90
        - name: llm-pool-version-2
          group: inference.networking.k8s.io
          kind: InferencePool
          weight: 10
    
  2. Aplique o manifesto de exemplo ao seu cluster:

    kubectl apply -f routes-to-llm.yaml
    

O grupo llm-pool InferencePool original recebe a maior parte do tráfego, enquanto o grupo llm-pool-version-2 InferencePool recebe o resto. Aumente gradualmente o peso do tráfego para o llm-pool-version-2 InferencePool para concluir a implementação da atualização do modelo base.

O que se segue?