Notas de lançamento de Snowflake ML

Este artigo contém as notas de versão do Snowflake ML, incluindo o seguinte, quando aplicável:

  • Mudanças de comportamento

  • Novos recursos

  • Correções de bugs voltados para o cliente

Nota

Estas notas não incluem mudanças em recursos que não foram anunciados publicamente. Esses recursos podem aparecer no código-fonte do Snowflake ML, mas não na documentação pública.

Consulte Snowflake ML: aprendizado de máquina de ponta a ponta para ver a documentação.

Verificação do pacote snowflake-ml-python

Todos os pacotes do Snowflake são assinados, permitindo que você verifique sua origem. Para verificar o pacote snowflake.ml.python, siga as etapas abaixo:

  1. Instale cosign. Este exemplo usa a instalação do Go: Instalação do cosign com o Go.

  2. Baixe o arquivo de um repositório como PyPi.

  3. Baixe um arquivo .sig para esse lançamento na página de lançamentos do GitHub.

  4. Verifique a assinatura usando cosign. Por exemplo:

cosign verify-blob snowflake_ml_python-1.7.0.tar.gz --key snowflake-ml-python-1.7.0.pub --signature resources.linux.snowflake_ml_python-1.7.0.tar.gz.sig

cosign verify-blob snowflake_ml_python-1.7.0.tar.gz --key snowflake-ml-python-1.7.0.pub --signature resources.linux.snowflake_ml_python-1.7.0
Copy

Nota

Este exemplo usa a biblioteca e a assinatura da versão 1.7.0 do pacote. Use os nomes de arquivo da versão que você está verificando.

Avisos de descontinuação

  • snowflake.ml.fileset.FileSet foi descontinuado e será removido em uma versão futura. Em vez disso, use snowflake.ml.dataset.Dataset e snowflake.ml.data.DataConnector.

  • Os nomes das funções “CamelCase” em snowflake.ml.cortex foram descontinuados e serão removidos em uma versão futura. Em vez disso, use os nomes “snake_case” para essas funções. Por exemplo, use classify_text em vez de ClassifyText.

  • O decorador partitioned_inefrerence_api foi descontinuado e será removido em uma versão futura. Use custom_model.partitioned_api em vez disso.

Versão 1.8.5 (2025-05-27)

Mudanças de comportamento

Mudanças no comportamento dos trabalhos de ML:

  • O argumento num_instances foi renomeado para target_instances nas APIs de envio do trabalho e agora é obrigatório.

Correções de bugs

Correções de bugs no registro do modelo:

  • Foi corrigido um erro na listagem e exclusão de serviços de contêineres.

  • Foi corrigido um bug no registro de pipelines do scikit-learn em que a função explain não era criada.

  • O registro de um modelo somente de contêiner não verifica mais se a versão necessária do snowflake-ml-python está disponível no canal conda do Snowflake.

Correções de bugs de explicabilidade:

  • A versão mínima do streamlit foi reduzida para 1.30 para melhorar a compatibilidade.

Correções de bugs de modelagem:

  • xgboost agora é novamente uma dependência obrigatória (era opcional na versão 1.8.4).

Novos recursos

Novos recursos dos trabalhos de ML:

  • O decorador de trabalhos agora tem o argumento min_instances que faz com que um trabalho aguarde que o número especificado de trabalhadores esteja pronto antes de iniciar.

Versão 1.8.4 (2025-05-12)

Mudanças de comportamento

Mudanças no comportamento dos trabalhos de ML:

  • A propriedade id agora é o nome totalmente qualificado do trabalho. Uma nova propriedade, name, foi introduzida para representar o nome do trabalho de ML.

  • O método list_jobs agora retorna o nome do trabalho de ML em vez do ID do trabalho.

Alterações no comportamento do registro do modelo:

  • Em log_model, a ativação da explicabilidade quando o modelo é implantado somente no Snowpark Container Services agora é um erro em vez de um aviso e impedirá a conclusão da operação de log.

Correções de bugs

Correções de bugs no registro do modelo:

  • Corrigido um erro no log dos modelos PyTorch e TensorFlow que causava UnboundLocalError: local variable 'multiple_inputs' referenced before assignment.

Novos recursos

Novos recursos de registro do modelo:

  • Ative automaticamente a explicabilidade para modelos que podem ser implementados em um warehouse.

Novos recursos de explicabilidade:

  • Novas funções de visualização em snowflake.ml.monitoring plotam explicações em notebooks.

  • Suporte a transformações categóricas em pipelines do scikit-learn.

Novos recursos de modelagem:

  • Suporte a tipos categóricos para entradas xgboost.DMatrix em modelos XGBoost.

Versão 1.8.3 (2025-04-28)

Novos recursos

Novos recursos de registro do modelo:

  • Padrão para uma imagem de contêiner CUDA, se disponível, ao registrar um modelo compatível com GPU para implantação no Container Runtime para ML.

  • As versões do modelo têm um método run_job que executa métodos de inferência como um trabalho do Snowpark Container Services de nó único. Esse método está disponível para todos os modelos, inclusive aqueles que não são implantados no Container Runtime para ML.

  • O padrão da plataforma de destino é um warehouse Snowflake ao registrar um modelo particionado.

Versão 1.8.2 (2025-04-15)

Novos recursos

A API dos trabalhos de ML, que permite executar código no Container Runtime para ML a partir de sua estação de trabalho local, está disponível em versão preliminar. Assim, a documentação para esta API está disponível na Snowflake ML API Reference, e as alterações na API aparecem nestas notas de versão. Os novos recursos da API dos trabalhos de ML podem não aparecer aqui até serem anunciados publicamente, mas aparecem na API de referência.

Novos recursos de registro do modelo:

  • Você pode especificar o caminho para gravar os arquivos de versões do modelo que são armazenados no estágio Snowflake do modelo usando a opção save_location no método log_model.

  • Ao registrar modelos no Container Runtime para ML, as dependências do modelo agora são incluídas em pip_requirements por padrão.

Versão 1.8.1 (2025-03-20)

Correções de bugs

Correções de bugs no registro do modelo:

  • Corrija o erro unsupported model type ao registrar um modelo do scikit-learn com um método de inferência score_samples.

  • Correção de falha na criação de serviço de inferência em um serviço suspenso existente.

Novos recursos

Novos recursos de registro do modelo:

  • A criação de uma cópia de uma versão de modelo com log_model com argumentos não suportados agora gera uma exceção.

Versão 1.8.0 (2025-03-20)

Mudanças de comportamento

Alterações no comportamento do registro do modelo:

  • As assinaturas automaticamente inferidas em transformers.Pipeline foram alteradas para usar a classe de tarefa FeatureGroupSpec, inclusive:

    • Assinatura para tarefas de preenchimento de máscara:

        ModelSignature(
            inputs=[
                FeatureSpec(name="inputs", dtype=DataType.STRING),
            ],
            outputs=[
                FeatureSpec(name="outputs", dtype=DataType.STRING),
            ],
      )
      
      Copy
    • Assinatura para tarefas de classificação de tokens:

      ModelSignature(
          inputs=[
              FeatureSpec(name="inputs", dtype=DataType.STRING),
          ],
          outputs=[
              FeatureSpec(name="outputs", dtype=DataType.STRING),
          ],
      )
      
      Copy
    • Assinatura para tarefas de resposta a perguntas:

      ModelSignature(
          inputs=[
              FeatureSpec(name="question", dtype=DataType.STRING),
              FeatureSpec(name="context", dtype=DataType.STRING),
          ],
          outputs=[
              FeatureSpec(name="outputs", dtype=DataType.STRING),
          ],
      )
      
      Copy
    • Assinatura para tarefas de resposta a perguntas quando top_k é maior que 1:

      ModelSignature(
          inputs=[
              FeatureSpec(name="question", dtype=DataType.STRING),
              FeatureSpec(name="context", dtype=DataType.STRING),
          ],
          outputs=[
              FeatureSpec(name="outputs", dtype=DataType.STRING),
          ],
      )
      
      Copy
    • Assinatura para tarefas de classificação de texto quando top_k é None:

      ModelSignature(
          inputs=[
              FeatureSpec(name="text", dtype=DataType.STRING),
              FeatureSpec(name="text_pair", dtype=DataType.STRING),
          ],
          outputs=[
              FeatureSpec(name="label", dtype=DataType.STRING),
              FeatureSpec(name="score", dtype=DataType.DOUBLE),
          ],
      )
      
      Copy
    • Assinatura para tarefas de classificação de texto quando top_k não é None:

      ModelSignature(
          inputs=[
              FeatureSpec(name="text", dtype=DataType.STRING),
              FeatureSpec(name="text_pair", dtype=DataType.STRING),
          ],
          outputs=[
              FeatureSpec(name="outputs", dtype=DataType.STRING),
          ],
      )
      
      Copy
    • Assinatura para tarefas de geração de texto:

      ModelSignature(
          inputs=[FeatureSpec(name="inputs", dtype=DataType.STRING)],
          outputs=[
              FeatureSpec(name="outputs", dtype=DataType.STRING),
          ],
      )
      
      Copy
  • Os modelos PyTorch e TensorFlow agora esperam uma única entrada e saída de tensor por padrão quando são registrados no registro de modelo. Para usar vários tensores (comportamento anterior), defina options={"multiple_inputs": True}.

    Exemplo com entrada de tensor único:

    import torch
    
    class TorchModel(torch.nn.Module):
        def __init__(self, n_input: int, n_hidden: int, n_out: int, dtype: torch.dtype = torch.float32) -> None:
            super().__init__()
            self.model = torch.nn.Sequential(
                torch.nn.Linear(n_input, n_hidden, dtype=dtype),
                torch.nn.ReLU(),
                torch.nn.Linear(n_hidden, n_out, dtype=dtype),
                torch.nn.Sigmoid(),
            )
    
        def forward(self, tensor: torch.Tensor) -> torch.Tensor:
            return cast(torch.Tensor, self.model(tensor))
    
    # Sample usage:
    data_x = torch.rand(size=(batch_size, n_input))
    
    # Log model with single tensor
    reg.log_model(
        model=model,
        ...,
        sample_input_data=data_x
    )
    
    # Run inference with single tensor
    mv.run(data_x)
    
    Copy

    Para várias entradas ou saídas de tensor, use:

    reg.log_model(
        model=model,
        ...,
        sample_input_data=[data_x_1, data_x_2],
        options={"multiple_inputs": True}
    )
    
    Copy
  • enable_explainability agora tem como padrão False quando o modelo pode ser implantado no Snowpark Container Services.

Correções de bugs

Correções de bugs de modelagem:

  • Correção de um bug em algumas métricas que permitia que uma versão não suportada do numpy fosse instalada automaticamente no procedimento armazenado, resultando em um erro de numpy na execução.

Correções de bugs no registro do modelo:

  • Correção de um bug que leva a uma mensagem de erro Model does not have _is_inference_api incorreta ao atribuir um modelo compatível como uma propriedade de um CustomModel.

  • Correção de um bug em que a inferência não funciona quando modelos com mais de 500 recursos de entrada são implantados em SPCS.

Novos recursos

Novos recursos de registro do modelo:

  • Suporte ao uso de um único torch.Tensor, tensorflow.Tensor e tensorflow.Variable como dados de entrada ou saída.

  • Suporte para xgboost.DMatrix datatype para modelos XGBoost.

Versão 1.7.5 (2025-03-06)

snowflake-ml-python 1.7.5 adiciona suporte ao Python 3.12.

Correções de bugs

Correções de bugs no registro do modelo:

  • Corrigido um problema de compatibilidade em que, ao usar snowflake-ml-python 1.7.0 ou posterior para salvar um modelo tensorflow.keras com keras 2.x, o modelo não podia ser executado no Snowflake. Esse problema ocorre quando relax_version está definido como True (ou padrão) e uma nova versão de snowflake-ml-python está disponível. Se você tiver registrado um modelo afetado, poderá recuperá-lo carregando-o usando ModelVerison.load e registrando-o novamente com a versão mais recente de snowflake-ml-python.

  • Foi removida a validação que impede que dados que não tenham valores não nulos sejam passados para ModelVersion.run.

Novos recursos

Novos recursos de registro do modelo:

  • Suporte para configurações de modelo Hugging Face com funcionalidade de mapeamento automático.

  • Suporte para modelos keras 3.x com backends de tensorflow e pytorch.

Novos recursos de explicabilidade do modelo:

  • Suporte para pipelines sklearn nativos e snowflake-ml-python.

Versão 1.7.4 (2025-01-28)

Importante

snowflake.ml.fileset.FileSet foi descontinuado e será removido em uma versão futura. Em vez disso, use snowflake.ml.dataset.Dataset e snowflake.ml.data.DataConnector.

Correções de bugs

Correções de erros no registro:

  • Corrigido um problema em que os pipelines do Hugging Face eram carregados usando um tipo de dados incorreto.

  • Corrigido um problema em que apenas uma linha era realmente usada ao inferir uma assinatura de modelo.

Novos recursos

Novos recursos do Cortex:

  • Nova opção guardrails na função Complete.

Versão 1.7.3 (09/01/2025)

Upgrades de dependências

  • fsspec e s3fs deve ser 2024.6.1 ou posterior e inferior a 2026.

  • mlflow deve ser 2.16.0 ou posterior e inferior a 3.

Novos recursos

Novos recursos do Cortex:

  • As funções Cortex agora têm nomes «snake_case». Por exemplo, ClassifyText agora é classify_text. Os nomes antigos “CamelCase” ainda funcionam, mas serão removidos em um lançamento futuro.

Novos recursos de registro do modelo:

  • O registro agora aceita mais de 500.000 recursos.

  • Adição do argumento user_files a Registry.log_model para incluir imagens ou outros arquivos no modelo.

  • Adição de suporte para lidar com as configurações do modelo Hugging Face com a funcionalidade de mapeamento automático.

Novos recursos de dados:

  • Adição do construtor DataConnector.from_sql.

Correções de bugs

Correções de erros no registro:

  • Correção de um bug que ocorria ao fornecer um índice pandas não abrangente DataFrame como entrada para ModelVersion.run.

  • Melhoria na geração de nomes de registro de modelos aleatórios para evitar colisões.

  • Correção de um problema ao inferir uma assinatura ou executar uma inferência com o Snowpark DataFrame que tem uma coluna cujo tipo é ARRAY e contém um valor NULL.

  • ModelVersion.run agora aceita um nome de serviço totalmente qualificado.

  • Correção de um erro em log_model para qualquer modelo scikit-learn com apenas pré-processamento de dados, incluindo modelos de pipeline somente de pré-processamento.

Correções de bugs de monitoramento:

  • Correção de um problema com a criação de monitores usando nomes totalmente qualificados.