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. Tais características 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.

Versão 1.7.0 (22 de outubro de 2024)

Mudanças de comportamento

Mudanças gerais de comportamento:

  • Python 3.9 é agora a versão mínima necessária.

Alterações no comportamento do conector de dados:

  • to_torch_dataset e to_torch_datapipe agora criam uma dimensão de 1 para dados escalar. Isso permite uma integração mais fluida com o PyTorch DataLoader, que cria lotes empilhando entradas. O exemplo a seguir ilustra a diferença.

    ds = connector.to_torch_dataset(shuffle=False, batch_size=3)
    
    Copy
    • Dados de entrada: "col1": [10, 11, 12]

      • Resultado anterior: array([10., 11., 12.]) com a forma (3,)

      • Novo resultado: array([[10.], [11.], [12.]]) com a forma (3, 1)

    • Dados de entrada: [[0, 100], [1, 110], [2, 200]]

      • Resultado anterior: array([[ 0, 100], [ 1, 110], [ 2, 200]]) com a forma (3,2)

      • Novo resultado: Nenhuma alteração

  • Agora você pode especificar um tamanho de lote de None em to_torch_dataset para comprimir dimensões de 1 para melhor interoperabilidade com o PyTorch DataLoader. ::code::None é o novo tamanho de lote padrão.

Mudanças no comportamento de desenvolvimento do modelo:

  • O argumento eps (epsilon) não é mais usado com a métrica log_loss. O argumento ainda é aceito para compatibilidade com versões anteriores, mas seu valor é ignorado, e o epsilon agora é computado pela implementação subjacente do scikit-lean.

Alterações no comportamento do registro do modelo:

  • Integrações de acesso externo não são mais necessárias ao criar um serviço de inferência no Snowflake 8.40 ou posterior.

Novos recursos

Novos recursos de registro do modelo:

  • Agora você pode passar argumentos de palavra-chave ao instanciar ModelContext para fornecer um número variável de valores de contexto. Por exemplo:

    mc = custom_model.ModelContext(
        config = 'local_model_dir/config.json',
        m1 = model1
    )
    
    class ExamplePipelineModel(custom_model.CustomModel):
        def __init__(self, context: custom_model.ModelContext) -> None:
            super().__init__(context)
            v = open(self.context['config']).read()
            self.bias = json.loads(v)['bias']
        @custom_model.inference_api
        def predict(self, input: pd.DataFrame) -> pd.DataFrame:
            model_output = self.context['m1'].predict(input)
            return pd.DataFrame({'output': model_output + self.bias})
    
    Copy
  • Suporte para o CategoricalDtype do pandas para colunas categóricas.

  • O método log_model agora aceita os parâmetros signature e sample_input_data para capturar dados em segundo plano da explicabilidade e linhagem de dados.

Correções de bugs

Correções de bugs do Data Connector:

  • Para dados multidimensionais, to_torch_dataset e to_torch_datapipe agora retornam uma matriz numpy com um tipo de dados apropriado em vez de uma lista.

Correções de bugs da Feature Store:

  • Correção de um problema em que ExampleHelper usava um nome de tabela incompleto.

  • Alteração do tempo de agregação dos recursos climáticos para uma hora em vez de um dia.

Correções de bugs de explicabilidade do modelo:

  • Correção de um problema com a explicabilidade dos modelos XGBoost usando uma nova versão da biblioteca SHAP.

Versão 1.6.4 (17 de outubro de 2024)

Correções de bugs

Correções de bugs no registro do modelo:

  • Correção do problema com o uso de ModelVersion.run com o Model Serving (inferência no SPCS).

Versão 1.6.3 (7 de outubro de 2024)

Mudanças de comportamento

Alterações no comportamento do registro do modelo:

  • Este lançamento não contém mais a versão preliminar da Model Registry API. Em vez disso, use a API pública em snowflake.ml.model_registry.

Correções de bugs

Correções de bugs no registro do modelo:

  • Correção de normalizações inesperadas de nomes de pacote que não seguem as convenções PEP-508 ao registrar um modelo em log.

  • Correção do erro “Não é um URI remoto válido” ao registrar modelos MLflow.

  • Correção de chamadas aninhadas para ModelVersion.run.

  • Correção da falha log_model quando um número de versão de pacote local contém partes diferentes da versão base.

Novos recursos

Novos recursos de registro do modelo:

  • Agora é possível definir um tipo de tarefa para o modelo em log_model por meio do parâmetro task.

Novos recursos da Feature Store:

  • FeatureView agora oferece suporte aos modos de inicialização ON_CREATE e ON_SCHEDULE.

Versão 1.6.2 (4 de setembro de 2024)

Correções de bugs

  • Correção de um bug envolvendo nomes inválidos passados onde nomes totalmente qualificados eram necessários. Agora eles geram corretamente uma exceção.

Correções de bugs de modelagem:

  • Registra corretamente os modelos criados usando a versão 2 e superior do XGBoost.

Correções de bugs de explicabilidade do modelo:

  • Soluções alternativas e melhor tratamento de erro para a versão 2.1.0 e superior do XGBoost.

  • Manipule corretamente modelos de classificação XGBoost multiclasse

Novos recursos

Novos recursos da Feature Store:

  • O método update_feature_view agora aceita um objeto FeatureView como alternativa ao nome e à versão.

Versão 1.6.1 (13 de agosto de 2024)

Correções de bugs

Correções de bugs da Feature Store:

  • O tamanho dos metadados não é mais limitado ao gerar um conjunto de dados.

Correções de bugs no registro do modelo:

  • Correção de uma mensagem de erro no método run de versões do modelo quando um nome de função não é fornecido e o modelo tem vários métodos de destino.

Novos recursos

Novos recursos de modelagem:

  • O método set_params agora está disponível para definir os parâmetros do estimador scikit-learn subjacente, se o modelo de ML Snowpark tiver sido ajustado.

Novos recursos de registro do modelo:

  • Suporte à explicabilidade de modelo em XGBoost, LightGBM, CatBoost e scikit-learn compatíveis com biblioteca shap.

Versão 1.6.0 (29 de julho de 2024)

Mudanças de comportamento

Alterações no comportamento da Feature Store:

  • Muitos argumentos posicionais agora são argumentos de palavra-chave. A tabela a seguir lista os argumentos afetados para cada método.

    Método

    Argumentos

    Inicializador Entity

    desc

    Inicializador FeatureView

    timestamp_col, refresh_freq, desc

    Inicializador FeatureStore

    creation_mode

    FeatureStore.update_entity

    desc

    FeatureStore.register_feature_view

    block, overwrite

    FeatureStore.list_feature_views

    entity_name, feature_view_name

    FeatureStore.get_refresh_history

    verbose

    Feature:Store.retrieve_feature_values

    spine_timestamp_col, exclude_columns, include_feature_view_timestamp_col

    FeatureStore.generate_training_set

    save_as, spine_timestamp_col, spine_label_cols, exclude_columns, include_feature_view_timestamp_col

    FeatureStore.generate_dataset

    version, spine_timestamp_col, spine_label_cols, exclude_columns, include_feature_view_timestamp_col, desc, output_type

  • Adicione uma nova coluna warehouse à saída de list_feature_views.

Correções de bugs

Correções de bugs de modelagem:

  • Correção de um problema no qual SimpleImputer não conseguia imputar colunas de inteiros com valores inteiros.

Correções de bugs no registro do modelo:

  • Correção de um problema ao fornecer um pandas Dataframe ModelVersion.run com base em índice diferente de zero.

Novos recursos

Novos recursos da Feature Store:

  • Adição de sobrecargas a determinados métodos para aceitar tanto uma cadeias de caracteres FeatureView quanto de nome/versão. As APIs afetadas incluem read_feature_view, refresh_feature_view, get_refresh_history, resume_feature_view, suspend_feature_view e delete_feature_view.

  • Adição dos exemplos de docstring em linha para todas as APIs públicas.

  • Adição da classe de utilitário ExampleHelper para ajudar no carregamento de dados de origem para simplificar notebooks públicos.

  • Adição do método update_entity.

  • Adição do argumento warehouse ao construtor FeatureView para substituir o warehouse padrão.

Novos recursos de registro do modelo:

  • Adição da opção para habilitar a explicabilidade ao registrar modelos XGBoost, LightGBM e Catboost.

  • Adição de suporte para registrar um modelo de um objeto ModelVersion.

Novos recursos de modelagem:

  • Você pode desabilitar o limite de tamanho dos dados de treinamento de 10GB na otimização de hiperparâmetros distribuídos executando:

    from snowflake.ml.modeling._internal.snowpark_implementations import ( distributed_hpo_trainer, )
    distributed_hpo_trainer.ENABLE_EFFICIENT_MEMORY_USAGE = False
    
    Copy

Versão 1.5.4 (11 de julho de 2024)

Correções de bugs

Correções de bugs no registro do modelo:

  • Correção do problema “401 Não autorizado” ao implementar um modelo no Snowpark Container Services.

Correções de bugs da Feature Store:

  • Algumas exceções em setters de propriedade foram rebaixadas para avisos, permitindo que você altere desc, refresh_freq e warehouse em exibições de recurso de “rascunho”.

Correções de bugs de modelagem:

  • Correção de problemas com a chamada de OneHotEncoder e OrdinalEncoder com um dicionário como o parâmetro categories e os dados em um DataFrame pandas.

Novos recursos

Novos recursos de registro do modelo:

  • Permissão da substituição de device_map e device ao carregar modelos de pipeline do Hugging Face.

  • Adicione os métodos set_alias e unset_alias às instâncias de ModelVersion para gerenciar os aliases da versão do modelo.

  • Adicione um decorador partitioned_inference_api para criar métodos de inferência particionados em modelos.

Novos recursos da Feature Store:

  • Novas colunas refresh_freq, refresh_mode e scheduling_state adicionadas à saída do método list_feature_views.

  • O método update_feature_view agora oferece suporte à atualização da descrição de uma exibição de recurso.

  • Os novos métodos refresh_feature_view e get_refresh_history gerenciam as atualizações de exibições de recurso.

  • O novo método generate_training_set gera instantâneos de recurso baseados em tabela. generate_dataset(..., output_type="table") foi descontinuado e gera um DeprecationWarning.

Novos recursos de modelagem:

  • OneHotEncoder e OrdinalEncoder agora aceitam uma lista de valores semelhantes a uma matriz para o argumento categories.

Versão 1.5.3 (17 de junho de 2024)

Correções de bugs

Correções de bugs no registro do modelo:

  • Correção de um problema que causava resultados incorretos ao usar um Dataframe pandas com mais de 100 mil linhas como entrada do método ModelVersion.run em procedimentos armazenados.

Correções de bugs de modelagem:

  • Correção de um problema ao passar categorias para OneHotEncoder e OrdinalEncoder como um dicionário ou como um DataFrame pandas.

Novos recursos

Novos recursos de registro do modelo:

  • O Model Registry agora oferece suporte a colunas de carimbo de data/hora (TIMESTAMP_NTZ) em dados de entrada e saída.

Novos recursos de modelagem:

  • OneHotEncoder e OrdinalEncoder agora oferecem suporte a uma lista de valores semelhantes a uma matriz ao argumento categories.

Novos recursos de conjunto de dados:

  • As instâncias DatasetVersion agora têm propriedades label_cols e exclude_cols.

Versão 1.5.2 (10 de junho de 2024)

Correções de bugs

Correções de bugs no registro do modelo:

  • Correção de um problema que impedia chamadas para log_model em um procedimento armazenado.

Correções de bugs de modelagem:

  • Correção rápida para import snowflake.ml.modeling.parameters.enable_anonymous_sproc que não funcionava devido a erro de dependência de pacote.

Versão 1.5.1 (22/05/2024)

Novos recursos

Novos recursos de registro do modelo:

  • Os métodos log_model, get_model e delete_model agora oferecem suporte a nomes totalmente qualificados.

Novos recursos de modelagem:

  • Agora você pode usar um procedimento armazenado anônimo durante o ajuste, para que a modelagem não exija privilégios para operar no esquema do registro. Chame import snowflake.ml.modeling.parameters.enable_anonymous_sproc para habilitar esse recurso.

Correções de bugs

Correções de bugs no registro do modelo:

  • Corrigir problema com carregamento de modelos mais antigos.

Versão 1.5.0 (01/05/2024)

Mudanças de comportamento

Alterações no comportamento do registro do modelo:

  • O método fit_transform agora pode retornar um Snowpark DataFrame ou um panda DataFrame, correspondendo ao tipo de DataFrame passado para o método.

Novos recursos

Novos recursos de registro do modelo:

  • Adicionado suporte para exportar modelos do registro (ModelVersion.export).

  • Adicionado suporte para carregar o objeto do modelo subjacente (ModelVersion.load).

  • Adicionado suporte para renomear modelos (Model.rename).

Correções de bugs

Correções de bugs no registro do modelo:

  • Corrigido o erro «parâmetro inválido SHOW_MODEL_DETAILS_IN_SHOW_VERSIONS_IN_MODEL».

Versão 1.4.1 (18/04/2024)

Novos recursos

Novos recursos de registro do modelo:

  • Adicionado suporte para modelos catboost (catboost.CatBoostClassifier, catboost.CatBoostRegressor).

  • Adicionado suporte para modelos lightgbm (lightgbm.Booster, lightgbm.LightGBMClassifier, lightgbm.LightGBMRegressor).

Correções de bugs

Correções de bugs no registro do modelo:

  • Corrigido o bug que fez com que a opção relax_version não trabalhasse.

Versão 1.4.0 (08/04/2024)

Mudanças de comportamento

Alterações no comportamento do registro do modelo:

  • O método apply não é mais incluído como um método de destino por padrão ao registrar um modelo XGBoost. Se você precisar que esse método esteja disponível em modelos registrados, inclua-o manualmente na opção target-methods:

    log_model(..., options={"target_methods": ["apply", ...]})
    
    Copy

Novos recursos

Novos recursos de registro do modelo:

  • O registro agora oferece suporte a modelos de transformadores de sentenças de registro (sentence_transformers.SentenceTransformer).

  • O argumento version_name não é mais necessário ao registrar um modelo. Um ID aleatório legível por humanos é gerado se nenhum for fornecido.

Correções de bugs

Correções de bugs no registro do modelo:

  • Corrigir o problema em que, quando vários modelos são chamados na mesma consulta, os modelos posteriores ao primeiro retornavam resultados incorretos. Essa correção é aplicada quando os modelos são registrados e não beneficia os modelos existentes; você deve registrar seus modelos novamente para corrigir esse comportamento.

Correções de bugs de modelagem:

  • Corrigir bug no registro de um modelo onde apenas métodos mencionados em save_model foram adicionados à assinatura do modelo para modelos do Snowpark ML.

  • Corrigir bug em métodos de inferência em lote, como predict e predict_log_probe, que se n_jobs não fosse 1, os métodos não seriam executados.

  • Corrigir bug em métodos de inferência em lote onde eles não podiam inferir tipos de dados quando a primeira linha de dados continha NULL.

  • Os nomes das colunas de saída da otimização de hiperparâmetros distribuídos agora correspondem corretamente ao identificador Snowflake.

  • Relaxou as versões de dependências dos métodos de otimização de hiperparâmetros distribuídos; elas eram muito rígidas e faziam com que esses métodos falhassem.

  • scikit-learn agora está listado como uma dependência do pacote LightGBM.

Versão 1.3.1 (21/03/2024)

Novos recursos

Atualizações de FileSet/FileSystem:

  • snowflake.ml.fileset.sfcfs.SFFileSystem agora pode ser usado em UDFs e procedimentos armazenados.

Versão 1.3.0 (12/03/2024)

Mudanças de comportamento

Alterações no comportamento do registro do modelo:

  • Conforme anunciado anteriormente, o padrão para a opção relax_version (no argumento options de log_model) é agora True, permitindo uma implantação mais confiável na maioria dos casos, permitindo versões de dependência disponíveis no Snowflake.

  • Ao executar métodos de modelo, a validação de entrada baseada em intervalo de valores (que evita estouro de entrada) agora é opcional. Isso deve melhorar o desempenho e não deve causar problemas para a maioria dos tipos de modelos. Para habilitar a validação, passe o argumento nomeado strict_input_validation=True ao chamar o método run do modelo.

Mudanças no comportamento de desenvolvimento do modelo:

  • O método fit_predict agora retorna um DataFrame do pandas ou do Snowpark, dependendo do tipo de dados de entrada, e está disponível em todas as classes onde está disponível na classe subjacente scikit-learn, xgboost ou lightgbm.

Novos recursos e atualizações

Atualizações de FileSet/FileSystem:

  • Instâncias de snowflake.ml.fileset.sfcfs.SFFileSystem agora podem ser serializadas com pickle.

Correções de bugs

Correções de bugs no registro do modelo:

  • Corrigir um problema com a importação de log_model em algumas circunstâncias.

  • Corrigir uma mensagem de erro incorreta ao validar a entrada do DataFrame do Snowpark com um recurso de matriz.

Correções de bugs no desenvolvimento do modelo:

  • Relaxe as versões do pacote para todos os métodos de inferência quando a versão instalada de uma dependência não estiver disponível no canal conda do Snowflake.

Versão 1.2.3 (26/02/2024)

Novos recursos e atualizações

Atualizações de desenvolvimento de modelo:

  • Todas as classes de modelagem agora incluem um método score_samples para calcular a probabilidade logarítmica das amostras fornecidas.

Atualizações de registro de modelo:

  • Os recursos do tipo decimal são convertidos automaticamente (com um aviso) para DOUBLE ou FLOAT em vez de produzir um erro.

  • Melhoria na mensagem de erro da opção pip-requirements atualmente não suportada.

  • Agora você pode excluir uma versão de um modelo.

Correções de bugs

Correções de desenvolvimento de modelo:

  • precision_recall_fscore_support retornou resultados incorretos com average="samples".

Correções de registro de modelo:

  • Descrições, modelos e tags não foram recuperados corretamente em registros recém-criados na API de registro de modelo de versão preliminar privada devido a uma alteração recente no comportamento do Snowflake.

Versão 1.2.2 (13/02/2024)

Novos recursos e atualizações

Atualizações de registro de modelo:

  • Agora você pode especificar integrações de acesso externo ao implantar um modelo no Snowpark Container Services usando a API de registro de versão preliminar privada, permitindo que os modelos acessem a Internet para recuperar dependências durante a implantação. Os seguintes pontos de extremidade são necessários para todas as implantações:

    • docker. com:80

    • docker. com:443

    • anaconda.com:80

    • anaconda.com:443

    • anaconda.org:80

    • anaconda.org:443

    • pypi.org:80

    • pypi.org:443

    Para modelos derivados de HuggingFacePipeLineModel, os seguintes pontos de extremidade são necessários.

    • huggingface. com:80

    • huggingface. com:443

    • huggingface.co:80

    • huggingface.co:443

Versão 1.2.1 (25/01/2024)

Novos recursos e atualizações

Atualizações de desenvolvimento de modelo:

  • Inferir o tipo de dados da coluna para transformadores quando possível.

Atualizações de registro de modelo:

  • A opção relax_version (no argumento options de log_model) relaxa as dependências das versões declaradas para permitir versões secundárias mais recentes quando definida como True.

Versão 1.2.0 (12/01/2024)

Novos recursos e atualizações

Versão preliminar pública do registro do modelo. Consulte Registro de modelo Snowflake. A versão de versão preliminar privada anterior do registro do modelo foi descontinuada, mas continuará a ter suporte enquanto incluir recursos ainda não disponíveis na versão preliminar pública.

Atualizações de desenvolvimento de modelo:

  • Adicionado suporte para o método fit_predict nas classes AgglomerativeClustering, DBSCAN e OPTICS.

  • Adicionado suporte para o método fit_transform nas classes MDS, SpectralEmbedding e TSNE.