Delen via


Gegevens voorbereiden voor het afstemmen van Hugging Face-modellen

In dit artikel wordt beschreven hoe u uw gegevens voorbereidt op het verfijnen van open source grote taalmodellen met Hugging Face Transformers en Hugging Face Datasets.

Vereisten

Gegevens laden vanuit knuffelend gezicht

Hugging Face Datasets is een Hugging Face-bibliotheek voor het openen en delen van gegevenssets voor audio-, computer vision- en NLP-taken (Natural Language Processing). Met Hugging Face datasets kunt u gegevens laden vanaf verschillende plaatsen. De datasets bibliotheek bevat hulpprogramma's voor het lezen van gegevenssets uit de Hugging Face Hub. Er zijn veel gegevenssets die kunnen worden gedownload en leesbaar vanuit de Hugging Face Hub met behulp van de load_dataset functie. Meer informatie over het laden van gegevens met Hugging Face Datasets vindt u in de documentatie over Hugging Face.

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

Sommige gegevenssets in de Hugging Face Hub bieden de grootten van gegevens die worden gedownload en gegenereerd wanneer load_dataset ze worden aangeroepen. U kunt de load_dataset_builder grootten kennen voordat u de gegevensset downloadt met 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")

Zie het notebook Best practices voor het downloaden van gegevenssets van Hugging Face voor hulp bij het downloaden en voorbereiden van gegevenssets in Azure Databricks voor verschillende grootten van gegevens.

Uw training- en evaluatiegegevens opmaken

Als u uw eigen gegevens wilt gebruiken voor het verfijnen van modellen, moet u eerst uw training- en evaluatiegegevens opmaken in Spark DataFrames. Laad vervolgens de DataFrames met behulp van de hugging Face-bibliotheek datasets .

Begin met het opmaken van uw trainingsgegevens in een tabel die voldoet aan de verwachtingen van de trainer. Voor tekstclassificatie is dit een tabel met twee kolommen: een tekstkolom en een kolom met labels.

Voor het afstemmen moet u een model opgeven. Met de AutoClasses-bibliotheek voor Face Transformer hugging kunt u eenvoudig modellen en configuratie-instellingen laden, waaronder een breed scala aan voor verwerking van Auto Models natuurlijke taal.

Zo biedt AutoModelForSequenceClassification Hugging Face transformers bijvoorbeeld als modellaadprogramma voor tekstclassificatie, waarin gehele id's als categorielabels worden verwacht. Als u echter een DataFrame met tekenreekslabels hebt, moet u ook toewijzingen opgeven tussen de labels voor gehele getallen en tekenreekslabels bij het maken van het model. U kunt deze informatie als volgt verzamelen:

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)}

Maak vervolgens de gehele id's als een labelkolom met een Pandas UDF:

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)

Een hugging Face-gegevensset laden vanuit een Spark DataFrame

Het knuffelen van Face datasets ondersteunt het laden van Spark DataFrames met behulp van datasets.Dataset.from_spark. Zie de documentatie over Hugging Face voor meer informatie over de methode from_spark().

Als u bijvoorbeeld dataframes hebt train_df , test_df kunt u gegevenssets maken voor elk met de volgende code:

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 slaat de gegevensset op in de cache. In dit voorbeeld worden modeltrainingen voor het stuurprogramma beschreven, zodat er gegevens beschikbaar moeten worden gesteld. Omdat cache-materialisatie wordt geparallelliseerd met Behulp van Spark, moet de opgegeven cache_dir functie ook toegankelijk zijn voor alle werkrollen. Als u aan deze beperkingen wilt voldoen, cache_dir moet u een DBFS-hoofdvolume (Databricks File System) of koppelpunt zijn.

Het DBFS-hoofdvolume is toegankelijk voor alle gebruikers van de werkruimte en mag alleen worden gebruikt voor gegevens zonder toegangsbeperkingen. Als voor uw gegevens toegangsbeheer is vereist, gebruikt u een koppelpunt in plaats van de DBFS-hoofdmap.

Als uw gegevensset groot is, kan het schrijven naar DBFS lang duren. Als u het proces wilt versnellen, kunt u de parameter gebruiken om de working_dir gegevensset met hugging datasets face naar een tijdelijke locatie op schijf te schrijven en deze vervolgens naar DBFS te verplaatsen. Als u bijvoorbeeld de SSD wilt gebruiken als een tijdelijke locatie:

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

Caching voor gegevenssets

De cache is een van de manieren om datasets de efficiëntie te verbeteren. Alle gedownloade en verwerkte gegevenssets worden opgeslagen, dus wanneer de gebruiker de tussenliggende gegevenssets moet gebruiken, worden ze rechtstreeks vanuit de cache opnieuw geladen.

De standaardcachemap van gegevenssets is ~/.cache/huggingface/datasets. Wanneer een cluster wordt beëindigd, gaan de cachegegevens ook verloren. Databricks raadt u aan om de cachelocatie in DBFS te wijzigen door de omgevingsvariabele HF_DATASETS_CACHEin te stellen om het cachebestand te behouden bij het beëindigen van het cluster:

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

Een model verfijnen

Wanneer uw gegevens klaar zijn, kunt u deze gebruiken om een Hugging Face-model af te stemmen.

Notebook: Gegevenssets downloaden van Hugging Face

Dit voorbeeldnotebook bevat aanbevolen procedures voor het gebruik van de functie Hugging Face load_dataset om gegevenssets te downloaden en voor te bereiden op Azure Databricks voor verschillende grootten van gegevens.

Gegevenssets downloaden uit het notebook aanbevolen procedures voor Hugging Face

Notebook downloaden