Aracılığıyla paylaş


Yüz Tanıma modellerinde ince ayarlama yapmak için verileri hazırlama

Bu makalede, Yüz Dönüştürücülerini Kucaklama ve Yüz Veri Kümelerini Kucaklama ile verilerinizi büyük dil modellerinin açık kaynak hassas ayarlamalar için nasıl hazırlayacağınız gösterilmektedir.

Gereksinimler

  • Machine Learning 13.0 veya üzeri için Databricks Runtime. Bu kılavuzdaki örneklerde Databricks Runtime 13.0 ML ve üzeri sürümlerine dahil edilen Yüz Tanıma veri kümelerini kucaklama kullanılır.

Yüz Tanıma'dan veri yükleme

Yüz Tanıma Veri Kümelerini Kucaklama, ses, görüntü işleme ve doğal dil işleme (NLP) görevleri için veri kümelerine erişmeye ve bunları paylaşmaya yönelik bir Yüz Tanıma kitaplığıdır. Yüz Tanımayı Kucaklama datasets ile çeşitli yerlerden veri yükleyebilirsiniz. Kitaplıkta, Yüz Tanıma Hub'ından datasets veri kümelerini okumak için yardımcı programlar bulunur. işlevini kullanarak load_dataset Yüz Tanıma Hub'ından indirilebilen ve okunabilen birçok veri kümesi vardır. Yüz Tanıma Veri Kümelerini Kucaklama ile verileri yükleme hakkında daha fazla bilgi edinmek için Yüz Tanıma belgelerini inceleyin.

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

Yüz Tanıma Hub'ına Sarılma'daki bazı veri kümeleri, çağrıldığında load_dataset indirilen ve oluşturulan verilerin boyutlarını sağlar. ile load_datasetveri kümesini indirmeden önce boyutları bilmek için kullanabilirsinizload_dataset_builder.

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

Farklı veri boyutları için Azure Databricks'te veri kümelerini indirme ve hazırlama yönergeleri için Bkz. Yüz Tanıma en iyi yöntemlerine sarılma not defterinden veri kümelerini indirme.

Eğitim ve değerlendirme verilerinizi biçimlendirme

Model ince ayarı için kendi verilerinizi kullanmak için önce eğitim ve değerlendirme verilerinizi Spark DataFrame'lere biçimlendirmeniz gerekir. Ardından, Yüz datasets Tanıma kitaplığını kullanarak DataFrame'leri yükleyin.

Eğitim verilerinizi eğitmenin beklentilerini karşılayan bir tablo halinde biçimlendirerek başlayın. Metin sınıflandırması için bu, iki sütunu olan bir tablodur: metin sütunu ve etiket sütunu.

hassas ayarlamalar yapmak için bir model sağlamanız gerekir. Hugging Face Transformer AutoClasses kitaplığı, doğal dil işleme için çok çeşitli Auto Models modeller ve yapılandırma ayarlarını yüklemeyi kolaylaştırır.

Örneğin, Yüz TanımaYazma transformersAutoModelForSequenceClassification , metin sınıflandırması için bir model yükleyicisi olarak sağlanır ve bu da kategori etiketleri olarak tamsayı kimlikleri bekler. Ancak, dize etiketleri içeren bir DataFrame'iniz varsa, modeli oluştururken tamsayı etiketleri ve dize etiketleri arasında eşlemeler de belirtmeniz gerekir. Bu bilgileri aşağıdaki gibi toplayabilirsiniz:

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

Ardından, Pandas UDF ile etiket sütunu olarak tamsayı kimliklerini oluşturun:

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)

Spark DataFrame'den Sarılan Yüz Veri Kümesi Yükleme

Yüz Tanımayı Kucaklama datasets , kullanarak datasets.Dataset.from_sparkSpark DataFrame'lerden yüklemeyi destekler. from_spark() yöntemi hakkında daha fazla bilgi edinmek için Yüz Tanımayı Kucaklama belgelerine bakın.

Örneğin, ve test_df DataFrame'leriniz train_df varsa, aşağıdaki kodla her birine yönelik veri kümeleri oluşturabilirsiniz:

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 veri kümesini önbelleğe alır. Bu örnekte sürücüdeki model eğitimi açıklanır, bu nedenle verilerin sürücüde kullanılabilir hale getirilmesi gerekir. Ayrıca, önbellek gerçekleştirme Spark kullanılarak paralelleştirildiğinden cache_dir sağlanan tüm çalışanlar tarafından erişilebilir olmalıdır. Bu kısıtlamaları cache_dir karşılamak için bir Databricks Dosya Sistemi (DBFS) kök birimi veya bağlama noktası olmalıdır.

DBFS kök birimi, çalışma alanının tüm kullanıcıları tarafından erişilebilir ve yalnızca erişim kısıtlaması olmayan veriler için kullanılmalıdır. Verileriniz erişim denetimleri gerektiriyorsa DBFS kökü yerine bağlama noktası kullanın.

Veri kümeniz büyükse DBFS'ye yazmak uzun sürebilir. İşlemi hızlandırmak için, Hugging Face datasets parametresini working_dir kullanarak veri kümesini diskte geçici bir konuma yazabilir ve ardından DBFS'ye taşıyabilirsiniz. Örneğin, SSD'yi geçici bir konum olarak kullanmak için:

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

Veri kümeleri için Önbelleğe Alma

Önbellek, verimliliği artırmanın yollarından datasets biridir. Kullanıcının ara veri kümelerini kullanması gerektiğinde doğrudan önbellekten yeniden yüklenmesi için indirilen ve işlenen tüm veri kümelerini depolar.

Veri kümelerinin varsayılan önbellek dizinidir ~/.cache/huggingface/datasets. Bir küme sonlandırıldığında önbellek verileri de kaybolur. Databricks, önbellek dosyasını küme sonlandırmada kalıcı hale getirmek için ortam değişkenini HF_DATASETS_CACHEayarlayarak önbellek konumunu DBFS olarak değiştirmenizi önerir:

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

Modelde ince ayar yapma

Verileriniz hazır olduğunda, hugging face modeline ince ayar yapmak için kullanabilirsiniz.

Not Defteri: YüzLeri Kucaklama'dan veri kümelerini indirme

Bu örnek not defteri, Azure Databricks'te farklı veri boyutlarına yönelik veri kümelerini indirmek ve hazırlamak için Yüz Tanıma load_dataset özelliğini kullanmaya yönelik önerilen en iyi yöntemleri sağlar.

Yüz Tanıma en iyi yöntemleri not defterinden veri kümelerini indirme

Not defterini alma