Prepare os dados para o ajuste fino dos modelos Hugging Face

Este artigo demonstra como preparar seus dados para ajustar modelos de linguagem grande de código aberto com Hugging Face Transformers e Hugging Face Datasets.

Requisitos

Carregar dados do Hugging Face

dataset Hugging Face é uma biblioteca Hugging Face para acessar e compartilhar dataset para tarefas de áudio, visão de computador e processamento de linguagem natural (NLP). Com Hugging Face datasets , você pode carregar dados de vários lugares. A biblioteca datasets tem utilidades para ler dataset do Hugging Face Hub. Existem muitos dataset que podem ser baixados e lidos no Hugging Face Hub usando a função load_dataset. Saiba mais sobre como carregar dados com conjuntos de dados Hugging Face na documentação Hugging Face .

from datasets import load_dataset
dataset = load_dataset("imdb")

Alguns dataset no Hugging Face Hub fornecem os tamanhos dos dados que são downloads e gerados quando load_dataset é chamado. Você pode usar load_dataset_builder para saber os tamanhos antes de downloads o dataset com load_dataset.

from datasets import load_dataset_builder
from psutil._common import bytes2human

def print_dataset_size_if_provided(*args, **kwargs):
  dataset_builder = load_dataset_builder(*args, **kwargs)

  if dataset_builder.info.download_size and dataset_builder.info.dataset_size:
    print(f'download_size={bytes2human(dataset_builder.info.download_size)}, dataset_size={bytes2human(dataset_builder.info.dataset_size)}')
  else:
    print('Dataset size is not provided by uploader')

print_dataset_size_if_provided("imdb")

Consulte o dataset downloads do Notebookpráticas recomendadas do Hugging Face para obter orientações sobre como downloads e preparar dataset no Databricks para diferentes tamanhos de dados.

Formate seus dados de treinamento e avaliação

Para usar seus próprios dados para ajuste fino do modelo, você deve primeiro formatar seus dados de treinamento e avaliação em Spark DataFrames. Em seguida, carregue os DataFrames usando a biblioteca Hugging Face datasets .

comece formatando seus dados de treinamento em uma tabela que atenda às expectativas do treinador. Para classificação de texto, esta é uma tabela com duas colunas: uma coluna de texto e uma coluna de rótulos.

Para realizar o ajuste fino, você precisa fornecer um modelo. A biblioteca Hugging Face Transformer AutoClasses facilita o carregamento de modelos e definições de configuração, incluindo uma ampla variedade de Auto Models para processamento de linguagem natural.

Por exemplo, Hugging Face transformers fornece AutoModelForSequenceClassification como um carregador de modelo para classificação de texto, que espera IDs inteiros como rótulos de categoria. No entanto, se você tiver um DataFrame com rótulos strings , também deverá especificar mapeamentos entre os rótulos inteiros e os rótulos strings ao criar o modelo. Você pode coletar esta informação da seguinte forma:

labels = df.select(df.label).groupBy(df.label).count().collect()
id2label = {index: row.label for (index, row) in enumerate(labels)}
label2id = {row.label: index for (index, row) in enumerate(labels)}

Em seguida, crie os IDs inteiros como uma coluna de rótulo com um UDF do Pandas:

from pyspark.sql.functions import pandas_udf
import pandas as pd
@pandas_udf('integer')
def replace_labels_with_ids(labels: pd.Series) -> pd.Series:
  return labels.apply(lambda x: label2id[x])

df_id_labels = df.select(replace_labels_with_ids(df.label).alias('label'), df.text)

Carregar um conjunto de dados Hugging Face de um Spark DataFrame

Hugging Face datasets suporta carregamento de Spark DataFrames usando datasets.Dataset.from_spark. Consulte a documentação do Hugging Face para saber mais sobre o método from_spark() .

Por exemplo, se você tiver DataFrames train_df e test_df, poderá criar dataset para cada um com o seguinte código:

import datasets
train_dataset = datasets.Dataset.from_spark(train_df, cache_dir="/dbfs/cache/train")
test_dataset = datasets.Dataset.from_spark(test_df, cache_dir="/dbfs/cache/test")

Dataset.from_spark armazena em cache o dataset. Este exemplo descreve o treinamento do modelo no driver, portanto, os dados devem ser disponibilizados para ele. Além disso, como a materialização do cache é paralelizada usando o Spark, o cache_dir fornecido deve ser acessível a todos worker. Para atender a essas restrições, cache_dir deve ser um sistema de arquivos Databricks (volume DBFS root ou ponto de montagem.

O volume DBFS root é acessível a todos os usuários do workspace e deve ser usado apenas para dados sem restrições de acesso. Se seus dados exigirem controles de acesso, use um ponto de montagem em vez de DBFS root.

Se o dataset for grande, gravá-lo no DBFS pode levar muito tempo. Para acelerar o processo, você pode usar o parâmetro working_dir para que Hugging Face datasets grave o dataset em um local temporário no disco e, em seguida, mova-o para o DBFS. Por exemplo, para usar o SSD como um local temporário:

import datasets
dataset = datasets.Dataset.from_spark(
  train_df,
  cache_dir="/dbfs/cache/train",
  working_dir="/local_disk0/tmp/train",
)

Cache para conjuntos de dados

O cache é uma das maneiras pelas quais datasets melhora a eficiência. Ele armazena todos downloads e dataset processados para que, quando o usuário precisar usar o dataset intermediário, eles sejam recarregados diretamente do cache.

O diretório de cache default do dataset é ~/.cache/huggingface/datasets. Quando um clusters é encerrado, os dados do cache também são perdidos. Para manter o arquivo de cache no encerramento clusters , o Databricks recomenda alterar o local do cache para DBFS definindo a variável de ambiente HF_DATASETS_CACHE:

import os
os.environ["HF_DATASETS_CACHE"] = "/dbfs/place/you/want/to/save"

Ajustar um modelo

Quando seus dados estiverem prontos, você poderá usá-los para ajustar um modelo Hugging Face .

Notebook: downloads conjuntos de dados do Hugging Face

Este Notebook de exemplo fornece práticas recomendadas de uso da função Hugging Face load_dataset para downloads e preparar dataset no Databricks para diferentes tamanhos de dados.

downloads conjuntos de dados do Notebook de práticas recomendadas do Hugging Face

Abra o bloco de anotações em outra guia