TFX işlem hatları, makine öğrenimi (ML) iş akışınızı Apache Airflow, Apache Beam ve Kubeflow Pipelines gibi orkestratörler üzerinde düzenlemenize olanak tanır. İşlem hatları, iş akışınızı, her bileşenin makine öğrenimi iş akışınızda bir adımı gerçekleştirdiği bir dizi bileşen halinde düzenler. TFX standart bileşenleri, kolayca bir makine öğrenimi iş akışı oluşturmaya başlamanıza yardımcı olmak için kanıtlanmış işlevsellik sağlar. Ayrıca iş akışınıza özel bileşenler de dahil edebilirsiniz. Özel bileşenler, makine öğrenimi iş akışınızı şu şekilde genişletmenize olanak tanır:
- Tescilli bir sistemden veri almak gibi ihtiyaçlarınızı karşılayacak şekilde uyarlanmış bileşenler oluşturma.
- Veri artırma, üst örnekleme veya alt örnekleme uygulama.
- Güven aralıklarına veya otomatik kodlayıcı çoğaltma hatasına dayalı olarak anormallik tespiti gerçekleştirin.
- Uyarı ve izleme için yardım masaları gibi harici sistemlerle arayüz oluşturma.
- Etiketlenmemiş örneklere etiket uygulama.
- R kullanarak veri analizi gerçekleştirmek gibi Python dışındaki dillerle oluşturulmuş araçları makine öğrenimi iş akışınıza entegre etme.
Standart bileşenleri ve özel bileşenleri karıştırarak, TFX standart bileşenlerinde yerleşik olarak bulunan en iyi uygulamalardan yararlanırken ihtiyaçlarınızı karşılayan bir makine öğrenimi iş akışı oluşturabilirsiniz.
Bu kılavuz, TFX özel bileşenlerini anlamak için gereken kavramları ve özel bileşenler oluşturmanın farklı yollarını açıklamaktadır.
Bir TFX Bileşeninin Anatomisi
Bu bölüm, bir TFX bileşeninin bileşimine ilişkin üst düzey bir genel bakış sağlar. TFX işlem hatlarında yeniyseniz, TFX işlem hatlarını anlama kılavuzunu okuyarak temel kavramları öğrenin .
TFX bileşenleri, bir bileşen spesifikasyonu ve bir bileşen arayüz sınıfında paketlenmiş bir yürütücü sınıftan oluşur.
Bir bileşen spesifikasyonu, bileşenin girdi ve çıktı sözleşmesini tanımlar. Bu sözleşme, bileşenin giriş ve çıkış yapıtlarını ve bileşenin yürütülmesi için kullanılan parametreleri belirtir.
Bir bileşenin yürütücü sınıfı, bileşen tarafından gerçekleştirilen işin uygulanmasını sağlar.
Bir bileşen arayüzü sınıfı, bir TFX işlem hattında bir bileşen olarak kullanılmak üzere bileşen spesifikasyonunu yürütücüyle birleştirir.
Çalışma zamanında TFX bileşenleri
Bir işlem hattı bir TFX bileşenini çalıştırdığında, bileşen üç aşamada yürütülür:
- İlk olarak Sürücü, gerekli yapıtları meta veri deposundan almak ve bunları bileşene aktarmak için bileşen spesifikasyonunu kullanır.
- Daha sonra Yürütücü bileşenin işini gerçekleştirir.
- Daha sonra Yayımcı, bileşenin çıktılarını meta veri deposunda depolamak için bileşen belirtimini ve yürütücünün sonuçlarını kullanır.
Çoğu özel bileşen uygulaması, Sürücüyü veya Yayımcıyı özelleştirmenizi gerektirmez. Tipik olarak, Sürücü ve Yayımcı'da değişiklik yapılması yalnızca işlem hattınızın bileşenleri ile meta veri deposu arasındaki etkileşimi değiştirmek istiyorsanız gerekli olmalıdır. Bileşeninizin yalnızca girişlerini, çıkışlarını veya parametrelerini değiştirmek istiyorsanız yalnızca bileşen özelliklerini değiştirmeniz gerekir.
Özel bileşen türleri
Üç tür özel bileşen vardır: Python işlev tabanlı bileşenler, kapsayıcı tabanlı bileşenler ve tamamen özel bileşenler. Aşağıdaki bölümlerde farklı bileşen türleri ve her bir yaklaşımı kullanmanız gereken durumlar açıklanmaktadır.
Python işlev tabanlı bileşenler
Python işlev tabanlı bileşenlerin oluşturulması, konteyner tabanlı bileşenlere veya tamamen özel bileşenlere göre daha kolaydır. Bileşen belirtimi, Python işlevinin bağımsız değişkenlerinde, bir bağımsız değişkenin bir girdi yapıtı mı, çıktı yapısı mı yoksa bir parametre mi olduğunu açıklayan tür açıklamaları kullanılarak tanımlanır. İşlev gövdesi bileşenin yürütücüsünü tanımlar. Bileşen arayüzü, işlevinize @component
dekoratörünün eklenmesiyle tanımlanır.
İşlevinizi @component
dekoratörüyle süsleyerek ve işlev bağımsız değişkenlerini tür açıklamalarıyla tanımlayarak, bir bileşen belirtimi, bir yürütücü ve bir bileşen arayüzü oluşturma karmaşıklığı olmadan bir bileşen oluşturabilirsiniz.
Python işlev tabanlı bileşenlerin nasıl oluşturulacağını öğrenin.
Konteyner tabanlı bileşenler
Konteyner tabanlı bileşenler, herhangi bir dilde yazılmış kodu bir Docker konteynerinde yürütebildiğiniz sürece ardışık düzeninize entegre etme esnekliği sağlar. Kapsayıcı tabanlı bir bileşen oluşturmak için bileşeninizin yürütülebilir kodunu içeren bir Docker kapsayıcı görüntüsü oluşturmanız gerekir. Daha sonra şunu tanımlamak için create_container_component
işlevini çağırmanız gerekir:
- Bileşen spesifikasyonunuzun girişleri, çıkışları ve parametreleri.
- Bileşen yürütücüsünün çalıştırdığı kapsayıcı görüntüsü ve komut.
Bu işlev, ardışık düzen tanımınıza ekleyebileceğiniz bir bileşenin örneğini döndürür.
Bu yaklaşım, kodunuzu kapsayıcı görüntü olarak paketlemeyi gerektirdiğinden Python işlev tabanlı bir bileşen oluşturmaktan daha karmaşıktır. Bu yaklaşım, Python olmayan kodu ardışık düzeninize dahil etmek veya karmaşık çalışma zamanı ortamları veya bağımlılıkları olan Python bileşenleri oluşturmak için en uygun olanıdır.
Kapsayıcı tabanlı bileşenlerin nasıl oluşturulacağını öğrenin.
Tamamen özel bileşenler
Tamamen özel bileşenler, bileşen spesifikasyonunu, yürütücüyü ve bileşen arayüzü sınıflarını tanımlayarak bileşenler oluşturmanıza olanak tanır. Bu yaklaşım, standart bir bileşeni ihtiyaçlarınıza uyacak şekilde yeniden kullanmanıza ve genişletmenize olanak tanır.
Mevcut bir bileşen, geliştirmekte olduğunuz özel bileşenle aynı giriş ve çıkışlarla tanımlanmışsa mevcut bileşenin Executor sınıfını geçersiz kılabilirsiniz. Bu, bir bileşen belirtimini yeniden kullanabileceğiniz ve mevcut bir bileşenden türetilen yeni bir yürütücü uygulayabileceğiniz anlamına gelir. Bu şekilde, mevcut bileşenlerde yerleşik olan işlevleri yeniden kullanır ve yalnızca gerekli olan işlevleri uygularsınız.
Ancak yeni bileşeninizin girdileri ve çıktıları benzersizse, tamamen yeni bir bileşen spesifikasyonu tanımlayabilirsiniz.
Bu yaklaşım, mevcut bileşen spesifikasyonlarının ve uygulayıcılarının yeniden kullanılması için en iyisidir.