ML için veri ön işleme: seçenekler ve öneriler

Bu belge, denetimli öğrenme görevlerine odaklanarak makine öğrenimi (ML) için veri mühendisliği ve özellik mühendisliği konusunu inceleyen iki bölümlü bir serinin ilkidir. Bu ilk bölümde, Google Cloud'daki makine öğrenimi ardışık düzeninde verilerin ön işlenmesine yönelik en iyi uygulamalar anlatılmaktadır. Belge, verileri hazırlamak, modeli eğitmek ve modele tahmin amacıyla hizmet vermek için TensorFlow ve açık kaynak TensorFlow Transform ( tf.Transform ) kitaplığını kullanmaya odaklanıyor. Bu belge, makine öğrenimi için verileri ön işlemenin zorluklarını vurguluyor ve Google Cloud'da veri dönüşümünü etkili bir şekilde gerçekleştirmeye yönelik seçenekler ve senaryoları açıklıyor.

Bu belgede BigQuery , Dataflow , Vertex AI ve TensorFlow Keras API'sine aşina olduğunuz varsayılmaktadır.

İkinci belge olan Google Cloud ile ML için Veri ön işleme , tf.Transform ardışık düzeninin nasıl uygulanacağına ilişkin adım adım bir eğitim sağlar.

giriiş

ML, verilerdeki karmaşık ve potansiyel olarak yararlı kalıpları otomatik olarak bulmanıza yardımcı olur. Bu modeller, daha sonra yeni veri noktalarında kullanılabilen bir makine öğrenimi modelinde yoğunlaştırılır; bu sürece tahmin yapma veya çıkarım yapma adı verilir.

ML modeli oluşturmak çok adımlı bir süreçtir. Her adım kendi teknik ve kavramsal zorluklarını sunar. Bu iki bölümlü seri, denetimli öğrenme görevlerine ve hedef değişkene yönelik güçlü tahmin sinyalleri oluşturmak için kaynak verileri seçme, dönüştürme ve artırma sürecine odaklanır. Bu işlemler, alan bilgisini veri bilimi teknikleriyle birleştirir. Operasyonlar özellik mühendisliğinin özüdür.

Gerçek dünyadaki ML modelleri için eğitim veri kümelerinin boyutu kolaylıkla bir terabayta (TB) eşit veya daha büyük olabilir. Dolayısıyla bu veri kümelerini verimli ve dağıtık bir şekilde işleyebilmek için büyük ölçekli veri işleme çerçevelerine ihtiyacınız var. Tahminlerde bulunmak için bir ML modeli kullandığınızda, eğitim verileri için kullandığınız dönüşümlerin aynısını yeni veri noktalarına da uygulamanız gerekir. Aynı dönüşümleri uygulayarak canlı veri kümesini ML modeline modelin beklediği şekilde sunarsınız.

Bu belgede, özellik mühendisliği işlemlerinin farklı ayrıntı düzeylerine yönelik bu zorluklar ele alınmaktadır: örnek düzeyinde, tam geçişli ve zaman aralığı toplamaları. Bu belgede ayrıca Google Cloud'da makine öğrenimi için veri dönüşümü gerçekleştirme seçenekleri ve senaryoları da açıklanmaktadır.

Bu belge ayrıca, veri ön işleme hatları aracılığıyla hem örnek düzeyinde hem de tam geçişli veri dönüşümünü tanımlamanıza olanak tanıyan bir TensorFlow kitaplığı olan TensorFlow Transform'a ( tf.Transform ) genel bir bakış sağlar. Bu işlem hatları Apache Beam ile yürütülür ve model sunulurken olduğu gibi tahmin sırasında da aynı dönüşümleri uygulamanıza olanak tanıyan yapılar oluştururlar.

Makine öğrenimi için veriler ön işleme

Bu bölümde veri ön işleme işlemleri ve veri hazırlığının aşamaları tanıtılmaktadır. Ayrıca ön işleme operasyonlarının türleri ve bunların ayrıntı düzeyi de tartışılmaktadır.

Özellik mühendisliğiyle karşılaştırıldığında veri mühendisliği

Verilerin makine öğrenimi için ön işlenmesi, hem veri mühendisliğini hem de özellik mühendisliğini içerir. Veri mühendisliği ham verileri hazırlanmış verilere dönüştürme işlemidir. Özellik mühendisliği daha sonra ML modelinin beklediği özellikleri oluşturmak için hazırlanan verileri ayarlar. Bu terimler aşağıdaki anlamlara sahiptir:

Ham veriler (veya yalnızca veriler )
Veriler, makine öğrenimi için önceden herhangi bir hazırlık yapılmaksızın, kaynak formundadır. Bu bağlamda veriler ham haliyle (veri gölünde) veya dönüştürülmüş biçimde (veri ambarında) olabilir. Veri ambarındaki dönüştürülmüş veriler, analiz için kullanılmak üzere orijinal ham formundan dönüştürülmüş olabilir. Ancak bu bağlamda ham veriler , verilerin makine öğrenimi göreviniz için özel olarak hazırlanmadığı anlamına gelir. Veriler ayrıca tahminler için makine öğrenimi modellerini çağıran akış sistemlerinden gönderilirse ham veri olarak kabul edilir.
Hazırlanan veriler
Formdaki veri kümesi makine öğrenimi göreviniz için hazır: veri kaynakları ayrıştırıldı, birleştirildi ve tablo biçiminde bir forma yerleştirildi. Hazırlanan veriler toplanır ve doğru ayrıntı düzeyinde özetlenir; örneğin, veri kümesindeki her satır benzersiz bir müşteriyi temsil eder ve her sütun, son altı haftada harcanan toplam tutar gibi müşteriye ilişkin özet bilgileri temsil eder. Hazırlanan bir veri tablosunda ilgisiz sütunlar çıkarılmış, geçersiz kayıtlar filtrelenmiştir. Denetimli öğrenme görevleri için hedef özelliği mevcuttur.
Tasarlanmış özellikler
Model tarafından beklenen ayarlanmış özelliklere sahip veri kümesi (yani, daha sonra açıklanacağı gibi, hazırlanan veri kümesindeki sütunlarda ML'ye özgü belirli işlemlerin gerçekleştirilmesi ve eğitim ve tahmin sırasında modeliniz için yeni özellikler oluşturulmasıyla oluşturulan özellikler). Ön işleme işlemlerinde . Bu işlemlere örnek olarak sayısal sütunların 0 ile 1 arasında bir değere ölçeklendirilmesi, değerlerin kırpılması ve tek-sıcak kodlama kategorik özellikleri verilebilir.

Aşağıdaki diyagram, şekil 1, önceden işlenmiş verilerin hazırlanmasında yer alan adımları göstermektedir:

Ham verilerin hazırlanmış verilere ve mühendislik özelliklerine geçişini gösteren akış diyagramı.
Şekil 1. Ham veriden hazırlanmış verilere, mühendislik özelliklerine ve makine öğrenimine kadar veri akışı.

Uygulamada, aynı kaynaktan gelen veriler genellikle farklı hazırlık aşamalarındadır. Örneğin, veri ambarınızdaki bir tablodaki bir alan, doğrudan tasarlanmış bir özellik olarak kullanılabilir. Aynı zamanda, aynı tablodaki başka bir alanın mühendislik özelliğine dönüşmeden önce dönüşümlerden geçmesi gerekebilir. Benzer şekilde, veri mühendisliği ve özellik mühendisliği işlemleri aynı veri ön işleme adımında birleştirilebilir.

Ön işleme işlemleri

Veri ön işleme birkaç işlemi içerir. Her işlem, ML'nin daha iyi tahmin modelleri oluşturmasına yardımcı olmak için tasarlanmıştır. Bu ön işleme işlemlerinin ayrıntıları bu belgenin kapsamı dışındadır ancak bazı işlemler bu bölümde kısaca açıklanmaktadır.

Yapılandırılmış veriler için veri ön işleme işlemleri aşağıdakileri içerir:

  • Veri temizleme: Ham verilerden bozuk veya geçersiz değerlere sahip kayıtların kaldırılması veya düzeltilmesi ve çok sayıda sütunu eksik olan kayıtların kaldırılması.
  • Örnek seçimi ve bölümleme: eğitim, değerlendirme (doğrulama) ve test kümeleri oluşturmak için giriş veri kümesinden veri noktalarının seçilmesi. Bu süreç, tekrarlanabilir rastgele örnekleme, azınlık sınıfları aşırı örnekleme ve katmanlı bölümlendirme tekniklerini içerir.
  • Özellik ayarlama: sayısal değerlerin ölçeklendirilmesi ve normalleştirilmesi, eksik değerlerin atanması, aykırı değerlerin kırpılması ve çarpık dağılımlara sahip değerlerin ayarlanması dahil olmak üzere makine öğrenimi için bir özelliğin kalitesinin iyileştirilmesi.
  • Özellik dönüşümü: sayısal bir özelliğin kategorik bir özelliğe dönüştürülmesi ( gruplandırma yoluyla) ve kategorik özelliklerin sayısal bir temsile dönüştürülmesi (tek sıcak kodlama, sayımlarla öğrenme , seyrek özellik yerleştirmeler vb. yoluyla). Bazı modeller yalnızca sayısal veya kategorik özelliklerle çalışırken diğerleri karışık türdeki özellikleri işleyebilir. Modeller her iki türü de ele aldığında bile aynı özelliğin farklı temsillerinden (sayısal ve kategorik) yararlanabilirler.
  • Özellik çıkarma: PCA , yerleştirme çıkarma ve karma oluşturma gibi teknikleri kullanarak daha düşük boyutlu, daha güçlü veri temsilleri oluşturarak özelliklerin sayısını azaltır.
  • Özellik seçimi: modeli eğitmek için giriş özelliklerinin bir alt kümesinin seçilmesi ve filtre veya sarma yöntemleri kullanılarak ilgisiz veya gereksiz olanların göz ardı edilmesi. Özellik seçimi, eğer özelliklerde çok sayıda değer eksikse, basitçe özelliklerin bırakılmasını da içerebilir.
  • Özellik oluşturma: polinom genişletme (tek değişkenli matematiksel fonksiyonlar kullanarak) veya özellik geçişi (özellik etkileşimlerini yakalamak için) gibi tipik teknikleri kullanarak yeni özellikler oluşturma. Özellikler ayrıca makine öğrenimi kullanım senaryosunun etki alanından iş mantığı kullanılarak da oluşturulabilir.

Yapılandırılmamış verilerle (örneğin görüntüler, ses veya metin belgeleri) çalışırken, derin öğrenme, onu model mimarisine katlayarak etki alanı bilgisine dayalı özellik mühendisliğinin yerini alır. Evrişimli katman, otomatik bir özellik ön işlemcisidir. Doğru model mimarisini oluşturmak, verilere ilişkin bazı deneysel bilgileri gerektirir. Ayrıca aşağıdakiler gibi bir miktar ön işleme de ihtiyaç vardır:

  • Metin belgeleri için: kök çıkarma ve lemmatizasyon , TF-IDF hesaplaması ve n-gram çıkarma, yerleştirme araması.
  • Görüntüler için: kırpma, yeniden boyutlandırma, kırpma, Gauss bulanıklığı ve kanarya filtreleri.
  • Tüm veri türleri için (metin ve görüntüler dahil): tam olarak eğitilmiş modelin son hariç tüm katmanlarını bir özellik mühendisliği adımı olarak ele alan transfer öğrenimi .

Ön işleme ayrıntı düzeyi

Bu bölümde veri dönüştürme türlerinin ayrıntı düzeyi ele alınmaktadır. Eğitim verilerine uygulanan dönüşümleri kullanarak tahminler için yeni veri noktaları hazırlarken bu perspektifin neden kritik olduğunu gösterir.

Ön işleme ve dönüştürme işlemleri, işlem ayrıntı düzeyine göre aşağıdaki şekilde kategorize edilebilir:

  • Eğitim ve tahmin sırasında örnek düzeyinde dönüşümler . Bunlar, dönüşüm için yalnızca aynı örnekteki değerlerin gerekli olduğu basit dönüşümlerdir. Örneğin, örnek düzeyindeki dönüşümler, bir özelliğin değerinin belirli bir eşiğe kırpılmasını, başka bir özelliğin polinom olarak genişletilmesini, iki özelliğin çarpılmasını veya bir Boole bayrağı oluşturmak için iki özelliğin karşılaştırılmasını içerebilir.

    Bu dönüşümler, eğitim ve tahmin sırasında aynı şekilde uygulanmalıdır çünkü model, ham girdi değerlerine göre değil, dönüştürülen özelliklere göre eğitilecektir. Veriler aynı şekilde dönüştürülmezse model, eğitilmediği bir değer dağılımına sahip verilerle sunulduğu için kötü davranır. Daha fazla bilgi için Ön İşleme zorlukları bölümündeki eğitim-sunum çarpıklığı tartışmasına bakın.

  • Eğitim sırasında tam geçişli dönüşümler, ancak tahmin sırasında örnek düzeyinde dönüşümler . Bu senaryoda dönüşümler durum bilgilidir çünkü dönüşümü gerçekleştirmek için önceden hesaplanmış bazı istatistikler kullanırlar. Eğitim sırasında, eğitim verilerini, değerlendirme verilerini ve tahmin zamanında yeni verileri dönüştürmek için minimum, maksimum, ortalama ve varyans gibi miktarları hesaplamak üzere eğitim verilerinin tamamını analiz edersiniz.

    Örneğin, eğitim için sayısal bir özelliği normalleştirmek için, tüm eğitim verileri genelinde bunun ortalamasını (μ) ve standart sapmasını (σ) hesaplarsınız. Bu hesaplamaya tam geçiş (veya analiz ) işlemi denir. Modeli tahmin için sunduğunuzda, eğitim sunumunda çarpıklığı önlemek için yeni bir veri noktasının değeri normalleştirilir. Bu nedenle, eğitim sırasında hesaplanan μ ve σ değerleri, aşağıdaki basit örnek düzeyinde işlem olan özellik değerini ayarlamak için kullanılır:

    $$ value_{scaled} = (value_{raw} - \mu) \div \sigma $$

    Tam geçişli dönüşümler aşağıdakileri içerir:

    • MinMax, eğitim veri kümesinden hesaplanan minimum ve maksimum değerleri kullanarak sayısal özellikleri ölçeklendirir.
    • Eğitim veri kümesinde hesaplanan μ ve σ kullanılarak standart ölçeklendirme (z-puanı normalleştirme) sayısal özellikleri.
    • Nicelikler kullanılarak sayısal özelliklerin gruplandırılması.
    • Ortancayı (sayısal özellikler) veya modu (kategorik özellikler) kullanarak eksik değerleri atama.
    • Bir giriş kategorik özelliğinin tüm farklı değerlerini (sözcük dağarcığı) çıkararak dizeleri (nominal değerler) tam sayılara (indeksler) dönüştürme.
    • TF-IDF için hesaplamak üzere tüm belgelerde (örneklerde) bir terimin (özellik değeri) oluşumunun sayılması.
    • Verileri daha düşük boyutlu bir alana (doğrusal olarak bağımlı özelliklerle) yansıtmak için giriş özelliklerinin PCA'sını hesaplamak.

    μ, σ, min ve max gibi istatistikleri hesaplamak için yalnızca eğitim verilerini kullanmalısınız. Bu işlemler için test ve değerlendirme verilerini eklerseniz modeli eğitmek için değerlendirme ve test verilerinden bilgi sızdırmış olursunuz. Bunu yapmak test ve değerlendirme sonuçlarının güvenilirliğini etkiler. Tüm veri kümelerine tutarlı bir dönüşüm uyguladığınızdan emin olmak amacıyla, test ve değerlendirme verilerini dönüştürmek için eğitim verilerinden hesaplanan istatistiklerin aynısını kullanırsınız.

  • Eğitim ve tahmin sırasındaki tarihsel toplamalar . Bu, tahmin görevine girdi sinyalleri olarak iş toplamaları, türetmeler ve işaretler oluşturmayı içerir; örneğin, müşterilerin eğilim modelleri oluşturması için güncellik, sıklık ve parasal (RFM) ölçümler oluşturma. Bu tür özellikler önceden hesaplanabilir ve model eğitimi, toplu puanlama ve çevrimiçi tahmin sunumu sırasında kullanılmak üzere bir özellik deposunda saklanabilir. Ayrıca eğitim ve tahminden önce bu toplamalara ek özellik mühendisliği (örneğin, dönüştürme ve ayarlama) gerçekleştirebilirsiniz.

  • Eğitim sırasındaki tarihsel toplamalar, ancak tahmin sırasındaki gerçek zamanlı toplamalar . Bu yaklaşım, zaman içindeki gerçek zamanlı değerleri özetleyerek bir özellik oluşturmayı içerir. Bu yaklaşımda toplanacak örnekler zamansal pencere cümlecikleri aracılığıyla tanımlanır. Örneğin, rotanın son 5 dakika, son 10 dakika, son 30 dakika ve diğer dakikalardaki trafik ölçümlerine dayalı olarak taksi yolculuğu süresini tahmin eden bir model eğitmek istiyorsanız bu yaklaşımı kullanabilirsiniz. aralıklar. Bu yaklaşımı, son 3 dakika içinde hesaplanan sıcaklık ve titreşim değerlerinin hareketli ortalamasına dayanarak bir motor parçasının arızasını tahmin etmek için de kullanabilirsiniz. Bu toplamalar eğitim için çevrimdışı olarak hazırlanabilse de, sunum sırasında bir veri akışından gerçek zamanlı olarak hesaplanır.

    Daha doğrusu, eğitim verilerini hazırlarken, eğer toplu değer ham verilerde yoksa değer, veri mühendisliği aşamasında yaratılır. Ham veriler genellikle (entity, timestamp, value) biçiminde bir veritabanında depolanır. Önceki örneklerde entity , taksi rotaları için rota segmenti tanımlayıcısı ve motor arızası için motor parçası tanımlayıcısıdır. Hesaplama yapmak için pencereleme işlemlerini (entity, time_index, aggregated_value_over_time_window) kullanabilir ve toplama özelliklerini model eğitiminiz için bir girdi olarak kullanabilirsiniz.

    Gerçek zamanlı (çevrimiçi) tahmine yönelik model sunulduğunda, model, girdi olarak birleştirilmiş değerlerden türetilen özellikleri bekler. Bu nedenle, sisteminize aktarılan gerçek zamanlı veri noktalarından toplamaları hesaplamak için Apache Beam gibi bir akış işleme teknolojisini kullanabilirsiniz. Akış işleme teknolojisi, yeni veri noktaları geldikçe zaman pencerelerine dayalı olarak gerçek zamanlı verileri toplar. Ayrıca eğitim ve tahminden önce bu toplamalara ek özellik mühendisliği (örneğin, dönüştürme ve ayarlama) gerçekleştirebilirsiniz.

Google Cloud'da ML ardışık düzeni

Bu bölümde, yönetilen hizmetleri kullanarak Google Cloud'da TensorFlow ML modellerini eğitmek ve sunmak için kullanılan tipik bir uçtan uca ardışık düzenin temel bileşenleri açıklanmaktadır. Ayrıca veri ön işleme operasyonlarının farklı kategorilerini nerede uygulayabileceğinizi ve bu tür dönüşümleri uygularken karşılaşabileceğiniz ortak zorlukları da tartışır. Tf.Transform nasıl çalışır bölümü, TensorFlow Transform kütüphanesinin bu zorlukların üstesinden gelmeye nasıl yardımcı olduğunu gösterir.

Üst düzey mimari

Aşağıdaki diyagram (şekil 2), TensorFlow modellerinin eğitimi ve sunumu için tipik bir ML işlem hattının yüksek düzey mimarisini göstermektedir. Diyagramdaki A, B ve C etiketleri, veri ön işlemesinin gerçekleşebileceği ardışık düzendeki farklı yerleri ifade eder. Bu adımlara ilişkin ayrıntılar aşağıdaki bölümde verilmektedir.

Verilerin işlenmesine yönelik aşamaları gösteren mimari diyagram.
Şekil 2. Google Cloud'da makine öğrenimi eğitimi ve sunumu için üst düzey mimari.

Boru hattı aşağıdaki adımlardan oluşur:

  1. Ham veriler içe aktarıldıktan sonra tablo verileri BigQuery'de, görüntüler, ses ve video gibi diğer veriler ise Cloud Storage'da depolanır. Bu serinin ikinci bölümünde örnek olarak BigQuery'de depolanan tablo verileri kullanılıyor.
  2. Veri mühendisliği (hazırlık) ve özellik mühendisliği, Dataflow kullanılarak uygun ölçekte yürütülür. Bu yürütme, Cloud Storage'da depolanan ML'ye hazır eğitim, değerlendirme ve test kümeleri üretir. İdeal olarak bu veri kümeleri, TensorFlow hesaplamaları için optimize edilmiş format olan TFRecord dosyaları olarak saklanır.
  3. Modeli eğitmek için önceki adımlarda önceden işlenmiş verileri kullanan bir TensorFlow model eğitim paketi Vertex AI Training'e gönderilir. Bu adımın çıktısı, Cloud Storage'a aktarılan eğitimli bir TensorFlow SavedModel'dir .
  4. Eğitilen TensorFlow modeli, çevrimiçi tahminler için kullanılabilmesi amacıyla REST API'ye sahip bir hizmet olarak Vertex AI Prediction'a dağıtılır. Aynı model toplu tahmin işleri için de kullanılabilir.
  5. Model bir REST API olarak dağıtıldıktan sonra istemci uygulamaları ve dahili sistemler, bazı veri noktalarıyla istekler göndererek ve tahminlerle birlikte modelden yanıtlar alarak API'yi çağırabilir.
  6. Bu işlem hattını düzenlemek ve otomatikleştirmek için Vertex AI Pipelines'ı veri hazırlama, model eğitimi ve model dağıtım adımlarını başlatmak üzere bir planlayıcı olarak kullanabilirsiniz.

Tahminlerde bulunmak amacıyla giriş özelliklerini depolamak için Vertex AI Özellik Mağazasını da kullanabilirsiniz. Örneğin, en son ham verilerden periyodik olarak mühendislik özellikleri oluşturabilir ve bunları Vertex AI Özellik Mağazasında saklayabilirsiniz. İstemci uygulamaları, gerekli giriş özelliklerini Vertex AI Özellik Mağazasından alır ve tahminleri almak üzere bunları modele gönderir.

Ön işleme nerede yapılır?

Şekil 2'de A, B ve C etiketleri veri ön işleme işlemlerinin BigQuery, Dataflow veya TensorFlow'da gerçekleştirilebileceğini göstermektedir. Aşağıdaki bölümlerde bu seçeneklerin her birinin nasıl çalıştığı açıklanmaktadır.

Seçenek A: BigQuery

Mantık genellikle BigQuery'de aşağıdaki işlemler için uygulanır:

  • Örnekleme: Verilerden rastgele bir alt kümenin seçilmesi.
  • Filtreleme: alakasız veya geçersiz örneklerin kaldırılması.
  • Bölümleme: Verileri eğitim, değerlendirme ve test setleri oluşturmak için bölmek.

BigQuery SQL komut dosyaları, şekil 2'deki veri işleme adımı olan Dataflow ön işleme hattı için kaynak sorgusu olarak kullanılabilir. Örneğin, Kanada'da bir sistem kullanılıyorsa ve veri ambarında dünyanın her yerinden işlemler varsa, filtreleme Yalnızca Kanada'ya özel eğitim verilerini almanın en iyi yolu BigQuery'de yapılır. BigQuery'deki özellik mühendisliği basit ve ölçeklenebilirdir ve örnek düzeyinde ve geçmiş toplama özelliği dönüşümlerinin uygulanmasını destekler.

Ancak BigQuery'yi özellik mühendisliği için yalnızca modelinizi toplu tahmin (puanlama) için kullanıyorsanız veya özellikler BigQuery'de önceden hesaplanmış ancak çevrimiçi tahmin sırasında kullanılmak üzere Vertex AI Özellik Mağazası'nda depolanmışsa kullanmanızı öneririz. Modeli çevrimiçi tahminler için dağıtmayı planlıyorsanız ve çevrimiçi özellik deposunda tasarlanmış özelliğe sahip değilseniz, diğer sistemlerin oluşturduğu ham veri noktalarını dönüştürmek için SQL ön işleme işlemlerini çoğaltmanız gerekir. Başka bir deyişle, mantığı iki kez uygulamanız gerekir: İlk kez BigQuery'de eğitim verilerini ön işlemek için SQL'de ve ikinci kez tahmin amacıyla çevrimiçi veri noktalarını ön işlemek için modeli tüketen uygulamanın mantığında.

Örneğin, istemci uygulamanız Java'da yazılmışsa mantığı Java'da yeniden uygulamanız gerekir. Bu, bu belgenin ilerleyen kısımlarındaki Ön İşleme zorluklarının eğitim-hizmet çarpıklığı bölümünde açıklandığı gibi, uygulama tutarsızlıklarından kaynaklanan hatalara neden olabilir. Ayrıca iki farklı uygulamayı sürdürmek ekstra masraf gerektirir. Eğitim verilerini ön işlemek için SQL'deki mantığı değiştirdiğinizde, Java uygulamasını, sunum sırasında verileri ön işlemeye uygun şekilde değiştirmeniz gerekir.

Modelinizi yalnızca toplu tahmin için kullanıyorsanız (örneğin, Vertex AI toplu tahmini kullanarak) ve puanlama verileriniz BigQuery'den geliyorsa bu ön işleme işlemlerini BigQuery SQL komut dosyasının parçası olarak uygulayabilirsiniz. Bu durumda, hem eğitim hem de puanlama verilerini hazırlamak için aynı ön işleme SQL komut dosyasını kullanabilirsiniz.

Tam geçişli durum bilgisi olan dönüşümler BigQuery'de uygulamaya uygun değildir. Tam geçişli dönüşümler için BigQuery'yi kullanıyorsanız sayısal özellikleri ölçeklendirmek için ortalamalar ve varyanslar gibi durum bilgisi olan dönüşümlerin ihtiyaç duyduğu miktarları depolamak için yardımcı tablolara ihtiyacınız vardır. Ayrıca BigQuery'de SQL kullanarak tam geçişli dönüşümlerin uygulanması, SQL komut dosyalarında daha fazla karmaşıklık yaratır ve eğitim ile puanlama SQL komut dosyaları arasında karmaşık bir bağımlılık oluşturur.

Seçenek B: Veri Akışı

Şekil 2'de gösterildiği gibi, Apache Beam'de hesaplama açısından pahalı ön işleme işlemlerini uygulayabilir ve bunları Dataflow'u kullanarak uygun ölçekte çalıştırabilirsiniz. Dataflow, toplu ve akış veri işlemeye yönelik tam olarak yönetilen bir otomatik ölçeklendirme hizmetidir. Dataflow'u kullandığınızda, BigQuery'den farklı olarak veri işleme için özel harici kitaplıkları da kullanabilirsiniz.

Dataflow, örnek düzeyinde dönüşümlerin yanı sıra tarihsel ve gerçek zamanlı toplama özelliği dönüşümlerini gerçekleştirebilir. Özellikle, ML modelleriniz total_number_of_clicks_last_90sec gibi bir giriş özelliği bekliyorsa Apache Beam pencereleme işlevleri , bu özellikleri, gerçek zamanlı (akış) olay verilerinin (örneğin, tıklama olayları) zaman pencerelerinin değerlerini toplamaya dayalı olarak hesaplayabilir. Dönüşümlerin ayrıntı düzeyiyle ilgili daha önceki tartışmada buna "Eğitim sırasındaki geçmiş toplamalar, ancak tahmin sırasındaki gerçek zamanlı toplamalar" deniyordu.

Aşağıdaki diyagram (Şekil 3), neredeyse gerçek zamanlı tahminler için akış verilerinin işlenmesinde Dataflow'un rolünü göstermektedir.

Tahmin için akış verilerini kullanmaya yönelik mimari.
Şekil 3. Dataflow'da tahmin için akış verilerini kullanan üst düzey mimari.

Şekil 3'te gösterildiği gibi, işleme sırasında veri noktaları adı verilen olaylar Pub/Sub'a alınır. Dataflow bu veri noktalarını kullanır, zaman içindeki toplamlara göre özellikleri hesaplar ve ardından tahminler için dağıtılan ML modeli API'sini çağırır. Tahminler daha sonra giden Pub/Sub kuyruğuna gönderilir. Tahminler, Pub/Sub'dan izleme veya kontrol gibi alt sistemler tarafından tüketilebilir veya istekte bulunan orijinal istemciye geri gönderilebilir (örneğin, bildirim olarak). Tahminler, gerçek zamanlı alım için Cloud Bigtable gibi düşük gecikmeli bir veri deposunda da saklanabilir. Cloud Bigtable, bu gerçek zamanlı toplamaları biriktirmek ve depolamak için de kullanılabilir; böylece tahmin için gerektiğinde bunlara bakılabilir.

Aynı Apache Beam uygulaması, BigQuery gibi çevrimdışı bir veri deposundan gelen eğitim verilerini toplu olarak işlemek ve çevrimiçi tahminler sunmak için gerçek zamanlı verileri akış halinde işlemek için kullanılabilir.

Şekil 2'de gösterilen mimari gibi diğer tipik mimarilerde, istemci uygulaması çevrimiçi tahminler için doğrudan dağıtılan model API'sini çağırır. Bu durumda, eğitim verilerini hazırlamak için Dataflow'da ön işleme işlemleri uygulanırsa işlemler doğrudan modele giden tahmin verilerine uygulanmaz. Bu nedenle çevrimiçi tahminlerin sunulması sırasında bu gibi dönüşümlerin modele entegre edilmesi gerekir.

Veri akışı, gerekli istatistiklerin uygun ölçekte hesaplanmasıyla tam geçişli dönüşümü gerçekleştirmek için kullanılabilir. Ancak bu istatistiklerin, tahmin veri noktalarını dönüştürmek için tahmin sırasında kullanılmak üzere bir yerde saklanması gerekir. TensorFlow Transform ( tf.Transform ) kütüphanesini kullanarak, bu istatistikleri başka bir yerde saklamak yerine doğrudan modele gömebilirsiniz. Bu yaklaşım daha sonra tf.Transform nasıl çalışır bölümünde açıklanacaktır.

Seçenek C: TensorFlow

Şekil 2'de gösterildiği gibi, veri ön işleme ve dönüştürme işlemlerini TensorFlow modelinin kendisinde uygulayabilirsiniz. Şekilde gösterildiği gibi, TensorFlow modelini eğitmek için uyguladığınız ön işleme, model dışa aktarıldığında ve tahminler için dağıtıldığında modelin ayrılmaz bir parçası haline gelir. TensorFlow modelindeki dönüşümler aşağıdaki yollardan biriyle gerçekleştirilebilir:

  • Tüm örnek düzeyindeki dönüşüm mantığının input_fn işlevinde ve serving_fn işlevinde uygulanması. input_fn işlevi, bir modeli eğitmek için tf.data.Dataset API'sini kullanarak bir veri kümesi hazırlar. serving_fn işlevi, verileri tahminler için alır ve hazırlar.
  • Keras ön işleme katmanlarını kullanarak veya özel katmanlar oluşturarak dönüşüm kodunu doğrudan TensorFlow modelinize yerleştirme.

serving_fn işlevindeki dönüşüm mantığı kodu, çevrimiçi tahmin için SavedModel'inizin sunum arayüzünü tanımlar. Eğitim verilerini hazırlamak için kullanılan dönüşümlerin aynılarını, serving_fn işlevinin dönüştürme mantığı kodunda uygularsanız, aynı dönüşümlerin, sunulduğunda yeni tahmin veri noktalarına da uygulanmasını sağlar.

Ancak TensorFlow modeli her veri noktasını bağımsız olarak veya küçük bir toplu iş halinde işlediğinden, tüm veri noktalarından toplamaları hesaplayamazsınız. Sonuç olarak TensorFlow modelinizde tam geçişli dönüşümler uygulanamaz.

Ön işleme zorlukları

Veri ön işlemeyi uygulamanın başlıca zorlukları şunlardır:

  • Eğitim-hizmet çarpıklığı . Eğitim-servis çarpıklığı, antrenman ve servis sırasındaki etkinlik (tahmin performansı) arasındaki farkı ifade eder. Bu çarpıklığa, eğitimdeki verileri işleme şekliniz ile sunum ardışık düzenleri arasındaki tutarsızlık neden olabilir. Örneğin, modeliniz logaritmik olarak dönüştürülmüş bir özellik üzerinde eğitildiyse ancak sunum sırasında ham özellik ile sunulduysa tahmin çıktısı doğru olmayabilir.

    Dönüşümler modelin kendisinin bir parçası haline gelirse, daha önce Seçenek C: TensorFlow'da açıklandığı gibi örnek düzeyindeki dönüşümleri yönetmek kolay olabilir. Bu durumda, model hizmet arayüzü ( serving_fn işlevi) ham verileri beklerken model, çıktıyı hesaplamadan önce bu verileri dahili olarak dönüştürür. Dönüşümler, ham eğitim ve tahmin veri noktalarına uygulananlarla aynıdır.

  • Tam geçişli dönüşümler . TensorFlow modelinizde ölçeklendirme ve normalizasyon dönüşümleri gibi tam geçişli dönüşümleri uygulayamazsınız. Tam geçişli dönüşümlerde, bazı istatistiklerin (örneğin, sayısal özellikleri ölçeklendirmek için max ve min değerler), Seçenek B: Veri Akışı bölümünde açıklandığı gibi eğitim verileri üzerinde önceden hesaplanması gerekir. Daha sonra değerlerin, yeni ham veri noktalarını örnek düzeyinde dönüşümler olarak dönüştürmek için tahmin amacıyla model hizmeti sırasında kullanılmak üzere bir yerde saklanması gerekir; bu, eğitim hizmeti çarpıklığını önler. İstatistikleri doğrudan TensorFlow modelinize eklemek için TensorFlow Transform ( tf.Transform ) kitaplığını kullanabilirsiniz. Bu yaklaşım daha sonra tf.Transform nasıl çalışır bölümünde açıklanacaktır.

  • Daha iyi eğitim verimliliği için verileri önceden hazırlamak . Örnek düzeyinde dönüşümlerin modelin bir parçası olarak uygulanması, eğitim sürecinin verimliliğini düşürebilir. Bu bozulma, aynı dönüşümlerin her çağda aynı eğitim verilerine tekrar tekrar uygulanması nedeniyle oluşur. 1.000 özelliğe sahip ham eğitim verileriniz olduğunu ve 10.000 özellik oluşturmak için örnek düzeyinde dönüşümlerin bir karışımını uyguladığınızı hayal edin. Bu dönüşümleri modelinizin bir parçası olarak uygularsanız ve daha sonra modeli ham eğitim verileriyle beslerseniz, bu 10.000 işlem her örnekte N kez uygulanır; burada N , dönem sayısıdır. Ayrıca, hızlandırıcılar (GPU'lar veya TPU'lar) kullanıyorsanız, CPU bu dönüşümleri gerçekleştirirken bunlar boşta kalır ve bu, maliyetli hızlandırıcılarınızın verimli bir şekilde kullanılması anlamına gelmez.

    İdeal olarak, eğitim verileri, Seçenek B: Veri Akışı altında açıklanan teknik kullanılarak eğitimden önce dönüştürülür; burada 10.000 dönüştürme işlemi, her eğitim örneğinde yalnızca bir kez uygulanır. Dönüştürülen eğitim verileri daha sonra modele sunulur. Daha fazla dönüşüm uygulanmaz ve hızlandırıcılar her zaman meşguldür. Ayrıca Dataflow'u kullanmak, tam olarak yönetilen bir hizmet kullanarak büyük miktarda veriyi uygun ölçekte önceden işlemenize yardımcı olur.

    Eğitim verilerinin önceden hazırlanması, eğitim verimliliğini artırabilir. Ancak dönüşüm mantığını modelin dışında uygulamak ( Seçenek A: BigQuery veya Seçenek B: Veri Akışı'nda açıklanan yaklaşımlar), eğitim sunumunda çarpıklık sorununu çözmez. Tasarlanan özelliği hem eğitim hem de tahmin için kullanılacak özellik deposunda saklamadığınız sürece, model arayüzü dönüştürülmüş verileri beklediğinden, dönüşüm mantığının tahmin için gelen yeni veri noktalarına uygulanacak bir yere uygulanması gerekir. TensorFlow Transform ( tf.Transform ) kitaplığı, aşağıdaki bölümde açıklandığı gibi bu sorunu çözmenize yardımcı olabilir.

tf.Transform nasıl çalışır?

tf.Transform kütüphanesi, tam geçiş gerektiren dönüşümler için kullanışlıdır. tf.Transform kütüphanesinin çıktısı, eğitim ve hizmet için kullanılmak üzere örnek düzeyindeki dönüşüm mantığını ve tam geçişli dönüşümlerden hesaplanan istatistikleri temsil eden bir TensorFlow grafiği olarak dışa aktarılır. Hem eğitim hem de servis için aynı grafiği kullanmak çarpıklığı önleyebilir çünkü her iki aşamada da aynı dönüşümler uygulanır. Ayrıca tf.Transform kitaplığı, eğitim verilerini önceden hazırlamak ve eğitim verimliliğini artırmak için Dataflow'daki toplu işleme hattında uygun ölçekte çalışabilir.

Aşağıdaki diyagram (şekil 4), tf.Transform kitaplığının eğitim ve tahmin için verileri nasıl ön işlediğini ve dönüştürdüğünü gösterir. Süreç aşağıdaki bölümlerde anlatılmaktadır.

Ham verilerden tf.Transform'a ve tahminlere akışı gösteren diyagram.
Şekil 4. Verilerin ön işlenmesi ve dönüştürülmesi için tf.Transform davranışı.

Eğitim ve değerlendirme verilerini dönüştürün

tf.Transform Apache Beam API'lerinde uygulanan dönüşümü kullanarak ham eğitim verilerini önceden işler ve bunu Dataflow'da geniş ölçekte çalıştırırsınız. Ön işleme aşağıdaki aşamalarda gerçekleşir:

  • Analiz aşaması: Analiz aşamasında, durum bilgisi olan dönüşümler için gerekli istatistikler (ortalamalar, varyanslar ve nicelikler gibi), tam geçişli işlemlerle eğitim verileri üzerinde hesaplanır. Bu aşama, transform_fn grafiği de dahil olmak üzere bir dizi dönüşüm eseri üretir. transform_fn grafiği, örnek düzeyinde işlemler olarak dönüştürme mantığına sahip bir TensorFlow grafiğidir. Analiz aşamasında hesaplanan istatistikleri sabit olarak içerir.
  • Dönüştürme aşaması: Dönüştürme aşaması sırasında, transform_fn grafiği ham eğitim verilerine uygulanır; burada hesaplanan istatistikler, veri kayıtlarını örnek düzeyinde işlemek için (örneğin sayısal sütunları ölçeklendirmek için) kullanılır.

Bunun gibi iki aşamalı bir yaklaşım, tam geçişli dönüşümleri gerçekleştirmenin ön işleme zorluğunu giderir.

Değerlendirme verileri ön işleme tabi tutulduğunda, transform_fn grafiğindeki mantık ve eğitim verilerindeki analiz aşamasından hesaplanan istatistikler kullanılarak yalnızca örnek düzeyinde işlemler uygulanır. Başka bir deyişle, değerlendirme verilerindeki sayısal özellikleri normalleştirmek amacıyla μ ve σ gibi yeni istatistikleri hesaplamak için değerlendirme verilerini tam geçişli bir şekilde analiz etmezsiniz. Bunun yerine, değerlendirme verilerini örnek düzeyinde dönüştürmek için eğitim verilerinden hesaplanan istatistikleri kullanırsınız.

Dönüştürülen eğitim ve değerlendirme verileri, modeli eğitmek için kullanılmadan önce Dataflow kullanılarak uygun ölçekte hazırlanır. Bu parti veri hazırlama işlemi, eğitim verimliliğini artırmak için verilerin hazırlanmasının ön işleme zorluğunu ele almaktadır. Şekil 4'te gösterildiği gibi, model dahili arayüzü dönüştürülmüş özellikler beklemektedir.

Dönüşümleri dışa aktarılan modele ekleyin

Belirtildiği gibi, tf.Transform boru hattı tarafından üretilen transform_fn grafiği, dışa aktarılan bir tensorflow grafiği olarak saklanır. Dışa aktarılan grafik, örnek düzeyindeki işlemler olarak dönüşüm mantığından ve tam geçiş dönüşümlerinde grafik sabitleri olarak hesaplanan tüm istatistiklerden oluşur. Eğitimli model servis için dışa aktarıldığında, transform_fn grafiği serving_fn işlevinin bir parçası olarak SavedModel'e eklenir.

Tahmin modeli sunarken, model servis arayüzü ham formatta (yani herhangi bir dönüşümden önce) veri noktaları bekler. Ancak, model dahili arayüzü verileri dönüştürülmüş formatta bekler.

Şu anda modelin bir parçası olan transform_fn grafiği, gelen veri noktasındaki tüm ön işlem mantığını uygular. Tahmin sırasında örnek düzeyinde işlemde saklanan sabitleri (μ ve σ gibi) kullanır. Bu nedenle, transform_fn grafiği ham veri noktasını dönüştürülmüş biçime dönüştürür. Dönüştürülmüş format, Şekil 4'te gösterildiği gibi tahmin üretmek için model dahili arayüz tarafından beklenen şeydir.

Bu mekanizma, eğitim ve değerlendirme verilerini dönüştürmek için kullanılan aynı mantık (uygulama), tahmin porsiyonu sırasında yeni veri noktalarını dönüştürmek için uygulandığından, eğitime hizmet etme eğrisinin ön işleme zorluğunu çözmektedir.

Ön İşleme Seçenekleri Özeti

Aşağıdaki tabloda, bu belgenin tartıştığı veri ön işleme seçeneklerini özetlemektedir. Tabloda, "Yok" anlamına gelir "uygulanamaz."

Veri Ön İşleme Seçeneği Örnek düzeyinde
(vatansız dönüşümler)

Porsiyon sırasında eğitim ve örnek düzeyinde tam geçiş (durumsal dönüşümler)

Eğitim ve Servis Sırasında Gerçek Zamanlı (Pencere) Toplantılar (Akış Dönüşümleri)

BigQuery (SQL)

Parti Puanlama: Tamam - aynı dönüşüm uygulaması eğitim ve parti puanlama sırasında verilere uygulanır.

Çevrimiçi Tahmin: Önerilmez -Eğitim verilerini işleyebilirsiniz, ancak farklı araçlar kullanarak verileri işlediğiniz için antrenman hizmeti çarpıklığı ile sonuçlanır.

Parti Puanlama: Önerilmez .

Çevrimiçi Tahmin: Önerilmez .

Örnek düzeyde toplu/çevrimiçi dönüşümler için BigQuery kullanarak hesaplanan istatistikleri kullanabilmenize rağmen, kolay değildir, çünkü eğitim sırasında doldurulacak ve tahmin sırasında kullanılmak üzere bir istatistik mağazasını korumalısınız.

Parti Puanlama: Yok- Bu gibi toplamalar gerçek zamanlı olaylara göre hesaplanır.

Çevrimiçi Tahmin: Önerilmez -Eğitim verilerini işleyebilirsiniz, ancak farklı araçlar kullanarak verileri işlediğiniz için antrenman hizmeti çarpıklığı ile sonuçlanır.

DataFlow (Apache Beam)

Parti Puanlama: Tamam - aynı dönüşüm uygulaması eğitim ve parti puanlama sırasında verilere uygulanır.

Çevrimiçi Tahmin: Tamam - Sunum zamanındaki veriler DataFlow tarafından tüketilecek pub/alttan gelirse. Aksi takdirde, antrenman hizmeti eğrimi ile sonuçlanır.

Parti Puanlama: Önerilmez .

Çevrimiçi Tahminler: Önerilmez .

Örneğin DataFlow kullanılarak hesaplanan istatistikleri kullanabilmenize rağmen, kolay değildir, çünkü eğitim sırasında doldurulacak ve tahmin sırasında kullanılmak üzere bir istatistik mağazasını korumalısınız.

Parti Puanlama: Yok- Bu gibi toplamalar gerçek zamanlı olaylara göre hesaplanır.

Çevrimiçi tahmin: Tamam - aynı Apache ışını dönüşümü eğitim (toplu) ve servis (akış) sırasında verilere uygulanır.

DataFlow (Apache Beam + TFT)

Parti Puanlama: Tamam - aynı dönüşüm uygulaması eğitim ve parti puanlama sırasında verilere uygulanır.

Çevrimiçi Tahmin: Önerilen -Eğitim Seçme eğriminden kaçınır ve eğitim verilerini ön tarafa hazırlar.

Parti Puanlama: Önerilen .

Çevrimiçi Tahmin: Önerilen .

Her iki kullanım da önerilir, çünkü eğitim sırasında dönüşüm mantığı ve bilgisayarlı istatistikler, porsiyon için dışa aktarılan modele bağlı bir tensorflow grafiği olarak saklanır.

Parti Puanlama: Yok- Bu gibi toplamalar gerçek zamanlı olaylara göre hesaplanır.

Çevrimiçi tahmin: Tamam - aynı Apache ışını dönüşümü eğitim (toplu) ve servis (akış) sırasında verilere uygulanır.

Tensorflow *
( input_fn & serving_fn )

Parti Puanlama: Önerilmez .

Çevrimiçi Tahmin: Önerilmez .

Her iki durumda da eğitim verimliliği için, eğitim verilerini hazırlamak daha iyidir.

Parti puanlama: mümkün değil .

Çevrimiçi tahmin: mümkün değil .

Parti Puanlama: Yok- Bu gibi toplamalar gerçek zamanlı olaylara göre hesaplanır.

Çevrimiçi tahmin: mümkün değil .

* Tensorflow ile, geçiş, gömme ve tek sıcak kodlama gibi dönüşümler bildirici olarak feature_columns sütunları olarak gerçekleştirilmelidir.

Sıradaki ne