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_inference_api foi descontinuado e será removido em uma versão futura. Use custom_model.partitioned_api em vez disso.

Versão 1.10.0 (01/08/2025)

Novos recursos

Novos recursos de registro do modelo:

  • Adição de barras de progresso para ModelVersion.create_service e ModelVersion.log_model.

  • Registros de ModelVersion.create_service são agora gravados em um arquivo. A localização do arquivo de log é mostrada no console.

Versão 1.9.2 (28/07/2025)

Correções de bugs

Correções de bugs de DataConnector:

  • Corrigido um problema que causava erros ao mencionar self._session.

Correções de bugs no registro do modelo:

  • Corrigido um bug ao passar None para a matriz (pd.dtype('O')) na assinatura do modelo e no manipulador de dados do pandas.

Versão 1.9.1 (18/07/2025)

Correções de bugs

Correções de bugs no registro do modelo:

  • Correção de um bug com a configuração do token PAD quando o modelo de geração de texto HuggingFace tinha vários tokens EOS. O manipulador agora escolhe o primeiro token EOS como token PAD.

Novos recursos

Novos recursos DataConnector:

  • Os objetos DataConnector agora podem ser preparados.

Novos recursos de conjunto de dados:

  • Os objetos do conjunto de dados agora podem ser selecionados.

Novos recursos de registro do modelo:

  • Os modelos hospedados no Snowpark Container Services agora oferecem suporte a entrada ampla (500+ recursos).

Versão 1.9.0 (25/06/2025)

Mudanças de comportamento

Mudanças no comportamento dos trabalhos de ML:

  • Removido o parâmetro scope do método list_jobs.

  • Adicionados os parâmetros opcionais database e schema ao método list_jobs.

  • O método list_jobs agora retorna um pandas DataFrame em vez de um Snowpark DataFrame.

  • O método list_jobs agora retorna as seguintes colunas: name, status, message, database_name, schema_name, owner, compute_pool, target_instances, created_time e completed_time.

Alterações no comportamento do registro do modelo:

  • Definir relax_version como falso quando pip_requirements é especificado na chamada a log_model.

  • UserWarning é gerado somente em target_platforms especificados para lidar com avisos falsos

Correções de bugs

Correções de bugs no registro do modelo:

  • Correção de falha na conversão de Snowpark DataFrame em pandas DataFrame quando o parâmetro QUOTED_IDENTIFIERS_IGNORE_CASE está habilitado

  • Correção de entradas de log duplicadas de UserWarning durante o empacotamento do modelo

Novos recursos

Novos recursos de registro do modelo:

  • Novas APIs para representar plataformas de destino (snowflake.ml.model.target_platform.TargetPlatform), constantes e tarefas da plataforma de destino (snowflake.ml.model.task.Task).

  • O argumento target_platform no método log_model agora aceita uma constante TargetPlatformMode, que pode ser WAREHOUSE_ONLY, SNOWPARK_CONTAINER_SERVICES_ONLY ou BOTH_WAREHOUSE_AND_SNOWPARK_CONTAINER_SERVICES.

Novos recursos de trabalhos ML:

  • Os argumentos de envio de trabalho usados com menos frequência foram movidos para **kwargs.

  • As métricas de plataforma estão ativadas por padrão.

Nesta versão, as APIs de trabalho de ML estão agora estáveis e foram designadas como disponibilidade geral.

Versão 1.8.6 (18/06/2025)

Novos recursos

Novos recursos de registro do modelo:

  • Adição de informações de contêiner de serviço aos logs

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 de trabalhos de ML, que permite executar código no Container Runtime for ML de sua estação de trabalho local, está disponível em versão preliminar. Portanto, a documentação para essa API está disponível na referência de API de ML do Snowflake, e mudanças na API aparecem nestas notas de versão. Novos recursos na API de trabalhos de ML podem não aparecer aqui até serem anunciados publicamente, mas aparecem na referência de API.

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.