TFX işlem hatları, Apache Airflow, Apache Beam ve Kubeflow Pipelines gibi düzenleyicilerde makine öğrenimi (ML) iş akışınızı 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 ML iş akışı oluşturmaya başlamanıza yardımcı olmak için kanıtlanmış işlevsellik sağlar. İş akışınıza özel bileşenler de ekleyebilirsiniz. Özel bileşenler, makine öğrenimi iş akışınızı şu yollarla genişletmenize olanak tanır:
- Tescilli bir sistemden veri almak gibi ihtiyaçlarınızı karşılamak için uyarlanmış bileşenler oluşturun.
- Veri büyütme, üst örnekleme veya alt örnekleme uygulama.
- Güven aralıklarına veya otomatik kodlayıcı çoğaltma hatasına dayalı olarak anormallik algılaması 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 yapmak gibi, Python dışındaki dillerle oluşturulmuş araçları ML iş akışınıza entegre etme.
Standart bileşenleri ve özel bileşenleri karıştırarak, TFX standart bileşenlerinde yerleşik en iyi uygulamalardan yararlanırken ihtiyaçlarınızı karşılayan bir ML 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çıklar.
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 ardışık düzenlerinde yeniyseniz, TFX işlem hatlarını anlama kılavuzunu okuyarak temel kavramları öğrenin .
TFX bileşenleri, bir bileşen arabirim sınıfında paketlenmiş bir bileşen belirtimi ve bir yürütücü sınıfından oluşur.
Bir bileşen belirtimi , bileşenin girdi ve çıktı sözleşmesini tanımlar. Bu sözleşme, bileşenin girdi ve çıktı yapıları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ş için uygulamayı sağlar.
Bileşen arabirim sınıfı, bileşen belirtimini TFX işlem hattında bileşen olarak kullanmak için yürütücüyle birleştirir.
Çalışma zamanında TFX bileşenleri
Bir işlem hattı bir TFX bileşeni ç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 iletmek için bileşen belirtimini kullanır.
- Ardından, Yürütücü bileşenin çalışmasını gerçekleştirir.
- Ardından Yayıncı, 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ü veya Yayıncıyı özelleştirmenizi gerektirmez. Tipik olarak, Sürücü ve Yayımcı üzerinde değişiklikler, 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şeniniz için yalnızca girişleri, çıkışları veya parametreleri değiştirmek istiyorsanız, yalnızca bileşen belirtimini 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şlevine dayalı bileşenler
Python işlev tabanlı bileşenlerin oluşturulması, kapsayıcı tabanlı bileşenlerden veya tamamen özel bileşenlerden 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ısı, çıktı yapısı veya bir parametre olup olmadığını 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 arabirimi, işlevinize @component
dekoratörü eklenerek tanımlanır.
@component
dekoratörüyle işlevinizi süsleyerek ve tür açıklamalarıyla işlev argümanlarını tanımlayarak, bir bileşen belirtimi, bir yürütücü ve bir bileşen arabirimi oluşturmanın karmaşıklığı olmadan bir bileşen oluşturabilirsiniz.
Python işlevine dayalı bileşenlerin nasıl oluşturulacağını öğrenin.
Kapsayıcı tabanlı bileşenler
Kapsayıcı tabanlı bileşenler, bu kodu bir Docker kapsayıcısında yürütebildiğiniz sürece, herhangi bir dilde yazılmış kodu işlem hattınıza 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şturmalısınız. Ardından, aşağıdakileri tanımlamak için create_container_component
işlevini çağırmalısınız:
- Bileşen belirtiminizin girdileri, çıktıları ve parametreleri.
- Bileşen yürütücüsünün çalıştırdığı kapsayıcı görüntüsü ve komutu.
Bu işlev, işlem hattı tanımınıza ekleyebileceğiniz bir bileşenin bir örneğini döndürür.
Bu yaklaşım, kodunuzu bir kapsayıcı görüntüsü olarak paketlemeyi gerektirdiğinden, Python işlevi tabanlı bir bileşen oluşturmaktan daha karmaşıktır. Bu yaklaşım, boru hattınıza Python dışı kod eklemek veya karmaşık çalışma zamanı ortamları veya bağımlılıkları olan Python bileşenleri oluşturmak için en uygundur.
Kapsayıcı tabanlı bileşenlerin nasıl oluşturulacağını öğrenin.
Tamamen özel bileşenler
Tamamen özel bileşenler, bileşen belirtimi, yürütücü ve bileşen arabirimi 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ımlanırsa, 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şlevselliği yeniden kullanır ve yalnızca gerekli olan işlevselliği uygularsınız.
Bununla birlikte, yeni bileşeninizin girdileri ve çıktıları benzersiz ise, tamamen yeni bir bileşen belirtimi tanımlayabilirsiniz.
Bu yaklaşım, mevcut bileşen belirtimlerini ve yürütücüleri yeniden kullanmak için en iyisidir.