Menyiapkan data untuk menyempurnakan model Hugging Face
Artikel ini menunjukkan cara menyiapkan data Anda untuk menyempurnakan sumber terbuka model bahasa besar dengan Memeluk Face Transformers dan Memeluk Himpunan Data Wajah.
Persyaratan
- Databricks Runtime untuk Pembelajaran Mesin 13.0 atau lebih tinggi. Contoh dalam panduan ini menggunakan himpunan data Hugging Face yang disertakan dalam Databricks Runtime 13.0 ML ke atas.
Memuat data dari Hugging Face
Memeluk Face Datasets adalah pustaka Hugging Face untuk mengakses dan berbagi himpunan data untuk tugas audio, visi komputer, dan pemrosesan bahasa alami (NLP). Dengan Hugging Face datasets
, Anda dapat memuat data dari berbagai tempat. Pustaka datasets
memiliki utilitas untuk membaca himpunan data dari Hugging Face Hub. Ada banyak himpunan data yang dapat diunduh dan dapat dibaca dari Hugging Face Hub dengan menggunakan fungsi .load_dataset
Pelajari selengkapnya tentang memuat data dengan Memeluk Himpunan Data Wajah di dokumentasi Hugging Face.
from datasets import load_dataset
dataset = load_dataset("imdb")
Beberapa himpunan data di Hugging Face Hub menyediakan ukuran data yang diunduh dan dihasilkan saat load_dataset
dipanggil. Anda dapat menggunakan load_dataset_builder
untuk mengetahui ukuran sebelum mengunduh himpunan data dengan 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")
Lihat buku catatan Unduh himpunan data dari Praktik terbaik Hugging Face untuk panduan tentang cara mengunduh dan menyiapkan himpunan data di Azure Databricks untuk ukuran data yang berbeda.
Memformat data pelatihan dan evaluasi Anda
Untuk menggunakan data Anda sendiri untuk penyempurnaan model, Anda harus terlebih dahulu memformat data pelatihan dan evaluasi Anda ke dalam Spark DataFrames. Kemudian, muat DataFrames menggunakan pustaka Hugging Face datasets
.
Mulailah dengan memformat data pelatihan Anda ke dalam tabel yang memenuhi harapan pelatih. Untuk klasifikasi teks, ini adalah tabel dengan dua kolom: kolom teks dan kolom label.
Untuk melakukan penyempurnaan, Anda perlu menyediakan model. Pustaka Hugging Face Transformer AutoClasses memudahkan pemuatan model dan pengaturan konfigurasi, termasuk berbagai Auto Models
macam untuk pemrosesan bahasa alami.
Misalnya, Hugging Face transformers
menyediakan AutoModelForSequenceClassification
sebagai pemuat model untuk klasifikasi teks, yang mengharapkan ID bilangan bulat sebagai label kategori. Namun, jika Anda memiliki DataFrame dengan label string, Anda juga harus menentukan pemetaan antara label bilangan bulat dan label string saat membuat model. Anda dapat mengumpulkan informasi ini sebagai berikut:
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)}
Kemudian, buat ID bilangan bulat sebagai kolom label dengan 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)
Memuat himpunan data Hugging Face dari Spark DataFrame
Hugging Face datasets
mendukung pemuatan dari Spark DataFrames menggunakan datasets.Dataset.from_spark
. Lihat dokumentasi Hugging Face untuk mempelajari selengkapnya tentang metode from_spark().
Misalnya, jika Anda memiliki train_df
dan test_df
DataFrames, Anda dapat membuat himpunan data untuk masing-masing dengan kode berikut:
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
cache himpunan data. Contoh ini menjelaskan pelatihan model pada driver, sehingga data harus tersedia untuk driver tersebut. Selain itu, karena materialisasi cache diparalelkan menggunakan Spark, yang disediakan cache_dir
harus dapat diakses oleh semua pekerja. Untuk memenuhi batasan ini, cache_dir
harus berupa volume akar atau titik pemasangan Databricks File System (DBFS).
Volume akar DBFS dapat diakses oleh semua pengguna ruang kerja dan hanya boleh digunakan untuk data tanpa batasan akses. Jika data Anda memerlukan kontrol akses, gunakan titik pemasangan alih-alih akar DBFS.
Jika himpunan data Anda besar, menulisnya ke DBFS dapat memakan waktu lama. Untuk mempercepat proses, Anda dapat menggunakan working_dir
parameter untuk membuat Hugging Face datasets
menulis himpunan data ke lokasi sementara pada disk, lalu memindahkannya ke DBFS. Misalnya, untuk menggunakan SSD sebagai lokasi sementara:
import datasets
dataset = datasets.Dataset.from_spark(
train_df,
cache_dir="/dbfs/cache/train",
working_dir="/local_disk0/tmp/train",
)
Penembolokan untuk himpunan data
Cache adalah salah satu cara datasets
meningkatkan efisiensi. Ini menyimpan semua himpunan data yang diunduh dan diproses sehingga ketika pengguna perlu menggunakan himpunan data perantara, mereka dimuat ulang langsung dari cache.
Direktori cache default himpunan data adalah ~/.cache/huggingface/datasets
. Ketika kluster dihentikan, data cache juga hilang. Untuk mempertahankan file cache pada penghentian kluster, Databricks merekomendasikan untuk mengubah lokasi cache ke DBFS dengan mengatur variabel HF_DATASETS_CACHE
lingkungan :
import os
os.environ["HF_DATASETS_CACHE"] = "/dbfs/place/you/want/to/save"
Menyempurnakan model
Saat data Anda siap, Anda dapat menggunakannya untuk menyempurnakan model Hugging Face.
Notebook: Mengunduh himpunan data dari Hugging Face
Contoh notebook ini menyediakan praktik terbaik yang direkomendasikan untuk menggunakan fungsi Hugging Face load_dataset
untuk mengunduh dan menyiapkan himpunan data di Azure Databricks untuk berbagai ukuran data.