# Spaces'te ZenML

[ZenML](https://github.com/zenml-io/zenml), taşınabilir ve üretim ortamına hazır MLOps pipeline'ları oluşturmak için kullanılabilen, açık kaynaklı bir MLOps çerçevesidir. Veri Bilimcileri, ML Mühendisleri ve MLOps Geliştiricileri, üretim ortamına kadar uzanan geliştirme süreçlerinde birlikte çalışabilmeleri için tasarlanmıştır.

ZenML basit ve esnek bir sözdizimi sunar, bulut ve araç bağımsızdır ve ML iş akışlarına yönelik arayüz/soyutlamalar içerir. ZenML ile tüm favori araçlarınız tek bir yerde olur, böylece belirli ihtiyaçlarınıza uygun bir iş akışı oluşturabilirsiniz.

ZenML Hugging Face Space, ZenML'in dağıtılmış bir sürümünü birkaç tıklamayla çalışır hale getirmenizi sağlar. Birkaç dakika içinde, bu varsayılan ZenML paneli dağıtılır ve yerel makinenizden bağlanmaya hazır hale gelir.

Aşağıdaki bölümlerde, kendi ZenML örneğinizi dağıtmayı ve makine öğrenmesi boru hatlarınızı doğrudan Hub üzerinden görüntüleyip yönetmeyi öğreneceksiniz. Hugging Face Spaces'teki ZenML, **Docker kullanılarak Hub üzerinde tamamen barındırılan, kendi içinde tamamlanmış bir uygulamadır**. Aşağıdaki şema, tam süreci göstermektedir.

![ZenML on Hugging Face Spaces -- default deployment](https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/hub/zenml/hf_spaces_chart.png)

Özellikleri ve Hugging Face Spaces dağıtımınız üzerinden makine öğrenimi boru hatlarınızı çalıştırmaya nasıl başlayacağınızı öğrenmek için [ZenML dokümantasyonunu](https://docs.zenml.io/) ziyaret edin. Başlamak için ZenML boru hatlarına ait [bazı küçük örnekleri](https://github.com/zenml-io/zenml/tree/main/examples) inceleyebilir veya [ZenML Projects deposundaki](https://github.com/zenml-io/zenml-projects) daha karmaşık, üretim düzeyindeki projelerden birini seçebilirsiniz. ZenML, kutudan çıktığı gibi birçok sevdiğiniz araçla entegre olur, tabii ki [Hugging Face dahil](https://zenml.io/integrations/huggingface)! Kullanmak istediğiniz başka bir şey varsa, genişletilebilir olacak şekilde tasarlandık ve özel aracınız veya iş akışınızla sorunsuz bir şekilde çalışmasını sağlayabilirsiniz.

## ⚡️ ZenML'i Spaces'te dağıtın

ZenML'i birkaç tıklamayla Spaces üzerinde dağıtabilirsiniz:

    

ZenML uygulamanızı yapılandırmak için üç ana bileşeni belirtmeniz gerekir: Owner (kişisel hesabınız veya bir organizasyon), bir Space adı ve Visibility (sayfanın biraz aşağısında). Yerel makinenizden ZenML sunucusuna bağlanmak istiyorsanız, space görünürlüğünün 'Public' olarak ayarlanması gerektiğini unutmayın.

![Choose the ZenML Docker template](https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/hub/zenml/choose_space.png)

Burada sunucunuzda kullanmak için daha üst bir kademe makine seçme seçeneğiniz var. Ücretli bir CPU örneği seçmenin avantajı, otomatik kapatma politikalarına tabi olmaması ve siz açık bıraktığınız sürece açık kalmasıdır. Kalıcı bir CPU'dan yararlanmak için büyük olasılıkla bağlanmak üzere bir MySQL veritabanı oluşturup yapılandırmanız gerekecektir (aşağıya bakın).

Space'ınızın görünümünü, örneğin başlık, emojiler ve renkler gibi, kişiselleştirmek için "Files and Versions" bölümüne gidin ve README.md dosyanızdaki meta verileri düzenleyin. Spaces yapılandırma parametrelerine ilişkin tüm bilgiler, Hugging Face [belgeleme referans kılavuzunda](https://huggingface.co/docs/hub/spaces-config-reference) bulunabilir.

Space'inizi oluşturduktan sonra, ekranda 'Building' durumu ve loglar görünecektir. Bu durum 'Running' olarak değiştiğinde, Space'iniz kullanıma hazırdır. ZenML giriş arayüzü görünmüyorsa, sayfayı yenilemeyi deneyin.

Alanınızın sağ üst köşesinde, üzerine tıkladığınızda "Embed this Space" menü seçeneğini sunan üç noktalı bir buton göreceksiniz. (Bu özellik hakkında daha fazla ayrıntı için [Hugging Face dokümantasyonuna](https://huggingface.co/docs/hub/spaces-embed) bakın.) Şu anda ekranda görebileceğiniz kutuda gösterilen "Direct URL" değerini kopyalayın. Bu, aşağıdaki gibi görünmelidir: `https://<YOUR_USERNAME>-<SPACE_NAME>.hf.space`. Bu URL'yi açın ve panoya erişmek için varsayılan giriş bilgilerimizi kullanın (kullanıcı adı: 'default', şifre: (boş bırakın)).

## Yerel Makinenizden ZenML Sunucunuza Bağlanma

ZenML sunucunuz çalışmaya başladığında, yerel makinenizden ona bağlanabilirsiniz. Bunu yapmak için Space'inizin 'Direct URL' değerini almanız gerekir (bkz. yukarıdaki bölüm).

> [!WARNING]
> Space URL'ınız, yalnızca Space'in görünürlüğü 'Public' olarak ayarlandığında yerel makinenizden bağlantı için kullanılabilir durumda olacaktır.

Yerel makinenizden ZenML sunucunuza bağlanmak için 'Direct URL'yi aşağıdaki CLI komutuyla kullanabilirsiniz (ZenML'i kurduktan ve yer tutucu yerine özel URL'nizi kullandıktan sonra):

```shell
zenml connect --url '<YOUR_HF_SPACES_DIRECT_URL>' --username='default' --password=''
```

Tarayıcınızda Direct URL'yi kullanarak ZenML panosunu tam ekran bir uygulama olarak (yani etrafındaki Hugging Face Spaces sarmalayıcısı olmadan) kullanabilirsiniz.

> [!WARNING]
> ZenML paneli, Hugging Face web sayfası içinde görüntülendiğinde (yani ana `https://huggingface.co/...` web sitesinde sarıldığında) şu anda çalışmayacaktır. Bunun nedeni, ZenML ile Hugging Face arasında çerezlerin işlenmesindeki bir kısıtlamadır. Paneli 'Direct URL' üzerinden (yukarıda bkz.) görüntülemeniz **zorunludur**.

## Ek Yapılandırma Seçenekleri

Varsayılan olarak ZenML uygulaması, SQLite tabanlı kalıcı olmayan bir veritabanı kullanacak şekilde yapılandırılır. Kalıcı bir veritabanı kullanmak istiyorsanız, Space'inizin kök dizinindeki `Dockerfile` dosyasını düzenleyerek bunu yapılandırabilirsiniz. Değiştirebileceğiniz çeşitli parametrelere ilişkin ayrıntılar için, Docker ile dağıtılan ZenML'i yapılandırma konusundaki [kullanım kılavuzumuza](https://docs.zenml.io/getting-started/deploying-zenml/docker#zenml-server-configuration-options) bakın.

> [!TIP]
> Eğer alanı yalnızca test ve deneyler için kullanıyorsanız, yapılandırmada herhangi bir değişiklik yapmanıza gerek yoktur. Her şey kutudan çıktığı gibi çalışacaktır.

Hugging Face Spaces'lerinizi [belgelerimizde](https://docs.zenml.io/getting-started/deploying-zenml/docker#zenml-server-configuration-options) açıklandığı gibi harici bir secrets backend'i ile birlikte de kullanabilirsiniz. `Dockerfile` yapılandırmanızda kullanmanız gereken tüm secrets'ı yapılandırmak için Hugging Face'in yerleşik 'Repository secrets' özelliğini kullanmanızdan emin olmalısınız. Bu yapılandırmanın nasıl yapılacağına dair daha fazla ayrıntı için [belgelere](https://huggingface.co/docs/hub/spaces-sdks-docker#secret-management) bakın.

> [!WARNING]
> ZenML ile gizli bilgilerin yönetimi için bir bulut gizli bilgileri arka ucunu kullanmak istiyorsanız, Dashboard'daki ZenML Sunucunuzda **aşağıdaki asgari güvenlik önlemlerini almanız gerekir**:
>
> - `default` hesabında, başlarken aldığınız hesabın şifresini değiştirin. Bunu Dashboard üzerinden veya CLI ile yapabilirsiniz. - Şifresi olan yeni bir kullanıcı hesabı oluşturun ve bu hesaba `admin` rolünü atayın. Bu işlem de Dashboard üzerinden (yeni bir kullanıcıyı 'davet' ederek) veya CLI ile yapılabilir. - Yukarıda belirtildiği gibi yeni kullanıcı hesabı ve şifresiyle sunucuya yeniden bağlanın ve bu yeni kullanıcı hesabını çalışma hesabınız olarak kullanın.
>
> Bunun nedeni, Hugging Face Spaces dağıtım süreci tarafından oluşturulan varsayılan kullanıcıya bir şifre atanmamış olması ve Space'in herkese açık erişilebilir olmasıdır (Space herkese açıktır); bu nedenle bu ek adım olmadan *potansiyel olarak herkes gizli anahtarlarınıza erişebilir*. Şifrenizi değiştirmek için Dashboard'un sağ üst köşesindeki düğmeye tıklayarak Ayarlar sayfasına gidin ve ardından 'Update Password' seçeneğine tıklayın.

## HF Spaces'teki ZenML Sunucunuzu Yükseltme

Varsayılan alan, ZenML'in en son sürümünü otomatik olarak kullanır. Sürümünüzü güncellemek isterseniz, alanın 'Settings' sekmesindeki 'Factory reboot' seçeneğini seçmeniz yeterlidir. Dikkat edin, bu işlem alan içindeki tüm verileri siler; bu nedenle yukarıda açıklandığı gibi kalıcı bir MySQL veritabanı kullanmıyorsanız, alan içindeki ZenML dağıtımınızda bulunan tüm verileri kaybedersiniz. Ayrıca, en üstteki `Dockerfile`'daki `FROM` içe aktarma ifadesini güncelleyerek alanın daha önceki bir sürümü kullanacak şekilde yapılandırabilirsiniz.

## Sonraki Adımlar

Bir sonraki adım olarak, hızlı bir şekilde başlamanın yollarını anlatan kısa ve pratik sayfalardan oluşan [ZenML ile MLOps Başlangıç Kılavuzu](https://docs.zenml.io/starter-guide/pipelines)'na göz atın. Alternatif olarak, ZenML'in birçok özelliğinin uçtan uca bir örneğini gösteren [`quickstart` örneğimize](https://github.com/zenml-io/zenml/tree/main/examples/quickstart) göz atabilirsiniz.

## 🤗 Geri bildirim ve destek

Hugging Face Spaces'teki ZenML sunucunuzla ilgili sorun yaşıyorsanız, space'in üst kısmındaki "Open Logs" düğmesine tıklayarak günlükleri görüntüleyebilirsiniz. Bu, sunucunuzda neler olduğunu anlamanız için daha fazla bağlam sağlar.

Başka bir konuda önerileriniz varsa veya çalışmayan belirli bir konuda destek ihtiyacınız varsa, lütfen [ZenML Slack topluluğuna katılın](https://zenml.io/slack-invite/) ve size yardımcı olmaktan memnuniyet duyarız!

