paint-brush
MLFlow ve MinIO ile Geliştirme Makinesi Nasıl Kurulurile@minio
6,279 okumalar
6,279 okumalar

MLFlow ve MinIO ile Geliştirme Makinesi Nasıl Kurulur

ile MinIO10m2023/11/03
Read on Terminal Reader
Read this story w/o Javascript

Çok uzun; Okumak

Bu gönderi, bir geliştirme makinesinde MLflow ve MinIO kurulumuna yönelik takip edilmesi kolay bir tarif sağlar.
featured image - MLFlow ve MinIO ile Geliştirme Makinesi Nasıl Kurulur
MinIO HackerNoon profile picture

MLflow hakkında

MLflow, makine öğrenimi yaşam döngüsünün tamamını yönetmek için tasarlanmış açık kaynaklı bir platformdur. Databricks, bunu kendi makine öğrenimi geliştirme ve dağıtım süreçlerinde karşılaşılan zorlukları ele almak için dahili bir proje olarak oluşturdu. MLflow daha sonra Haziran 2018'de açık kaynaklı bir proje olarak piyasaya sürüldü.


Yaşam döngüsünün tamamını yönetmeye yönelik bir araç olarak MLflow aşağıdaki bileşenleri içerir.


  • MLflow İzleme - Bu özelliği en çok bir mühendis kullanacaktır. Deneylerin kaydedilmesine ve sorgulanmasına olanak sağlar. Ayrıca her denemenin kodunu, verilerini, konfigürasyonunu ve sonuçlarını takip eder.
  • MLflow Projeleri - Kodun platformdan bağımsız bir formatta paketlenmesiyle denemelerin çoğaltılmasına olanak tanır.
  • MLflow Modelleri - Makine öğrenimi modellerini, sunulabilecekleri bir ortama dağıtır.
  • MLflow Depoları - Modellerin merkezi bir depoda depolanmasına, açıklamalara eklenmesine, keşfedilmesine ve yönetilmesine olanak tanır.


Tüm bu yetenekleri bir geliştirme makinesine kurmak mümkündür; böylece mühendisler, üretim kurulumunu bozma endişesi duymadan canlarının istediği gibi deneyler yapabilirler.

MLflow'u yüklemek ve ayarlamak için kullanılan tüm dosyalar Github depomuzda bulunabilir.

Kurulum Seçenekleri

MLFlow belgeleri, MLFlow'u yüklemek için en az 6 seçeneği listeler. Bu aşırı gibi görünebilir, ancak bu seçenekler bir veritabanı için farklı tercihlere ve değişen ağ karmaşıklık düzeylerine uyum sağlar.


Büyük veri kümeleri kullanan ve kendileri de oldukça büyüyebilecek modeller oluşturan birden fazla ekibe sahip bir kuruluş için en uygun seçenek aşağıda gösterilmiştir. Bu seçenek üç sunucunun (İzleme sunucusu, PostgreSQL veritabanı ve S3 Nesne Deposu) kurulumunu gerektirir; uygulamamız MinIO'yu kullanacaktır.


Kurulum seçenekleri


İzleme Sunucusu, bir mühendisin geliştirme makinesinden MLflow işlevselliğine erişim için kullanılan tek bir giriş noktasıdır. (İsmine aldanmayın; yukarıda listelenen tüm bileşenleri içerir - İzleme, Model, Projeler ve Depolar.) İzleme sunucusu, varlıkları depolamak için PostgreSQL'i kullanır. Varlıklar çalıştırmalar, parametreler, metrikler, etiketler, notlar ve meta verilerdir. (Daha sonra çalıştırmalarla ilgili daha fazla bilgi.) Uygulamamızdaki İzleme sunucusu, yapıları depolamak için MinIO'ya erişir. Yapıtlara örnek olarak modeller, veri kümeleri ve yapılandırma dosyaları verilebilir.


Bugünlerde mühendislerin kullanabileceği modern takımların güzel yanı, konteynerleri kullanarak takım seçimi ve ağ bağlantısı da dahil olmak üzere bir üretim ortamını taklit edebilmenizdir. Bu yazıda bunu göstereceğim. Yukarıda anlatılan sunucuları bir konteyner içinde çalışan hizmetler olarak kurmak için Docker Compose'un nasıl kullanılacağını göstereceğim. Ayrıca MLflow'un konfigürasyonu, dilerseniz mevcut bir MinIO örneğini kullanabileceğiniz şekilde ayarlanmıştır. Bu yazıda, yepyeni bir MinIO örneğinin nasıl dağıtılacağını göstereceğim, ancak Github depomuzdaki dosyalar, mevcut bir MinIO örneğine nasıl bağlanılacağını gösteren bir 'docker-compose' dosyasına sahiptir.

Neler Kuracağız

Aşağıda kurulması gereken her şeyin bir listesi bulunmaktadır. Bu liste, kapsayıcılarda hizmet haline gelecek sunucuların (MinIO, Postgres ve MLFlow) yanı sıra ihtiyaç duyacağınız SDK'ları (MinIO ve MLflow) içerir.


  1. Docker Masaüstü

  2. Docker Compose aracılığıyla MLFlow İzleme Sunucusu

  3. Docker Compose aracılığıyla MinIO Sunucusu

  4. Docker Compose aracılığıyla PostgresSQL

  5. Pip kurulumu aracılığıyla MLFlow SDK

  6. Pip kurulumu aracılığıyla MinIO SDK


Docker Compose hizmetlerimiz için ana bilgisayar görevi görecek olan Docker Desktop ile başlayalım.

Docker Masaüstü

İşletim sisteminize uygun kurulumu Docker'ın sitesinde bulabilirsiniz. Docker Desktop'ı bir Mac'e yüklüyorsanız Mac'inizin kullandığı çipi (Apple veya Intel) bilmeniz gerekir. Bunu Mac’inizin sol üst köşesindeki Apple simgesine tıklayıp “Bu Mac Hakkında” menü seçeneğine tıklayarak belirleyebilirsiniz.


Artık hizmetlerimizi kurmaya hazırız.

MLFlow Sunucusu, Postgres ve MinIO

MFLow Takip Sunucusu, PostgresSQL ve MinIO, aşağıda gösterilen Docker Compose dosyası kullanılarak hizmet olarak kurulacaktır.


 version: "3.3" services: db: restart: always image: postgres container_name: mlflow_db expose: - "${PG_PORT}" networks: - backend environment: - POSTGRES_USER=${PG_USER} - POSTGRES_PASSWORD=${PG_PASSWORD} - POSTGRES_DATABASE=${PG_DATABASE} volumes: - ./db_data:/var/lib/postgresql/data/ healthcheck: test: ["CMD", "pg_isready", "-p", "${PG_PORT}", "-U", "${PG_USER}"] interval: 5s timeout: 5s retries: 3 s3: restart: always image: minio/minio container_name: mlflow_minio volumes: - ./minio_data:/data ports: - "${MINIO_PORT}:9000" - "${MINIO_CONSOLE_PORT}:9001" networks: - frontend - backend environment: - MINIO_ROOT_USER=${MINIO_ROOT_USER} - MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD} - MINIO_ADDRESS=${MINIO_ADDRESS} - MINIO_PORT=${MINIO_PORT} - MINIO_STORAGE_USE_HTTPS=${MINIO_STORAGE_USE_HTTPS} - MINIO_CONSOLE_ADDRESS=${MINIO_CONSOLE_ADDRESS} command: server /data healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 30s timeout: 20s retries: 3 tracking_server: restart: always build: ./mlflow image: mlflow_server container_name: mlflow_server depends_on: - db ports: - "${MLFLOW_PORT}:5000" networks: - frontend - backend environment: - AWS_ACCESS_KEY_ID=${MINIO_ACCESS_KEY} - AWS_SECRET_ACCESS_KEY=${MINIO_SECRET_ACCESS_KEY} - MLFLOW_S3_ENDPOINT_URL=http://s3:${MINIO_PORT} - MLFLOW_S3_IGNORE_TLS=true command: > mlflow server --backend-store-uri postgresql://${PG_USER}:${PG_PASSWORD}@db:${PG_PORT}/${PG_DATABASE} --host 0.0.0.0 --serve-artifacts --artifacts-destination s3://${MLFLOW_BUCKET_NAME} healthcheck: test: ["CMD", "curl", "-f", "http://localhost:${MLFLOW_PORT}/"] interval: 30s timeout: 10s retries: 3 volumes: db_data: minio_data: networks: frontend: driver: bridge backend: driver: bridge


Bir şeyler ters gittiğinde sorunları gidermenize yardımcı olacak dikkate değer birkaç şey vardır. İlk olarak hem MinIO hem de PostgreSQL, verileri depolamak için yerel dosya sistemini kullanıyor. PostgreSQL için bu "db_data" klasörüdür ve MinIO için "minio_data" klasörüdür. Temiz bir kurulumla baştan başlamak isterseniz bu klasörleri silin.


Daha sonra, bu Docker Compose dosyası yapılandırmaya dayalıdır. Örneğin, PostgreSQL veritabanı adını "mlflow" olarak sabit kodlamak yerine, ad, Docker Compose dosyasında - "${PG_DATABASE}" aşağıdaki sözdizimini kullanarak aşağıda gösterilen "config.env" dosyasından gelir.


 # Postgres configuration PG_USER=mlflow PG_PASSWORD=mlflow PG_DATABASE=mlflow PG_PORT=5432 # MLflow configuration MLFLOW_PORT=5000 MLFLOW_BUCKET_NAME=mlflow # MinIO access keys - these are needed by MLflow MINIO_ACCESS_KEY=XeAMQQjZY2pTcXWfxh4H MINIO_SECRET_ACCESS_KEY=wyJ30G38aC2UcyaFjVj2dmXs1bITYkJBcx0FtljZ # MinIO configuration MINIO_ROOT_USER: 'minio_user' MINIO_ROOT_PASSWORD: 'minio_pwd' MINIO_ADDRESS: ':9000' MINIO_STORAGE_USE_HTTPS: False MINIO_CONSOLE_ADDRESS: ':9001' MINIO_PORT=9000 MINIO_CONSOLE_PORT=9001


Bu hizmetlerin ihtiyaç duyduğu tüm ortam değişkenleri bu dosyada ayarlanmıştır. Bu yapılandırma dosyası aynı zamanda bu servislerin birbirleriyle konuşması için gerekli bilgileri de içerir. MLFlow İzleme sunucusuna MinIO'ya nasıl erişileceğini bildiren şeyin ortam değişkenlerinin kullanımı olduğuna dikkat edin. Başka bir deyişle URL (bağlantı noktası numarası dahil), erişim anahtarı, gizli erişim anahtarı ve paket. Bu beni Docker Compose kullanımıyla ilgili son ve en önemli noktaya getiriyor - bu hizmetleri ilk kez açtığınızda, MLflow İzleme hizmetleri çalışmayacaktır çünkü önce MinIO kullanıcı arayüzüne girmeniz, anahtarlarınızı almanız ve paketi oluşturmanız gerekecektir. izleme hizmetinin yapıları depolamak için kullanacağı.


Şimdi bunu yapalım. Aşağıdaki komutu kullanarak hizmetleri ilk kez başlatın.


 docker-compose --env-file config.env up -d --build


Bu komutu Docker Compose dosyanızın bulunduğu dizinde çalıştırdığınızdan emin olun.


Artık MinIO kullanıcı arayüzünü kullanarak anahtarlarımızı alabilir ve paketimizi oluşturabiliriz.

MinIO Konsolu

Tarayıcınızdan 'localhost:9001'e gidin. 'Docker-compose' dosyasında MinIO konsol adresi için farklı bir bağlantı noktası belirttiyseniz bunun yerine o bağlantı noktasını kullanın. 'config.env' dosyasında belirtilen kök kullanıcıyı ve şifreyi kullanarak oturum açın.


Oturum açtıktan sonra Erişim Anahtarları sekmesine gidin ve Erişim anahtarı oluştur düğmesini tıklayın.


Erişim Anahtarları sekmesi


Bu sizi Erişim Anahtarı Oluştur sayfasına götürecektir.


Erişim Anahtarı sayfası oluştur



Erişim anahtarınız ve gizli anahtarınız siz Oluştur düğmesine tıklayana kadar kaydedilmez. Bu işlem tamamlanana kadar bu sayfadan ayrılmayın. Bu ekrandan anahtarları kopyalama konusunda endişelenmeyin. Oluştur düğmesine tıkladığınızda, anahtarları dosya sisteminize (JSON dosyasında) indirme seçeneği sunulur. Ham verileri yönetmek için MinIO SDK'yı kullanmak istiyorsanız bu sayfadayken başka bir erişim anahtarı ve gizli anahtar oluşturun.


Erişim anahtarı oluşturma


Daha sonra "mlflow" adında bir paket oluşturun. Bu çok basit; Kovalar sekmesine gidin ve 'Kova Oluştur' düğmesini tıklayın.


Anahtarlarınızı aldıktan ve paketinizi oluşturduktan sonra, kapsayıcıları durdurarak, `config.env'yi güncelleyerek ve ardından kapsayıcıları yeniden başlatarak hizmetlerin kurulumunu tamamlayabilirsiniz. Aşağıdaki komut konteynerlerinizi durduracak ve kaldıracaktır.


 docker-compose down


Yeniden başlatmak:

 docker-compose --env-file config.env up -d --build


Şimdi MLflow kullanıcı arayüzünü başlatalım ve her şeyin çalıştığından emin olalım.

MLflow kullanıcı arayüzünü başlatma

'localhost:5000'e gidin. MLflow kullanıcı arayüzünü görmelisiniz.


MLflow kullanıcı arayüzünü başlatma


Tüm sekmeleri keşfetmek için biraz zaman ayırın. MLflow'ta yeniyseniz Çalıştırma ve Denemeler kavramına aşina olun.


  • Çalıştırma, kodunuzdan geçen ve genellikle eğitilmiş bir modelle sonuçlanan bir geçiştir.
  • Denemeler, ilgili çalıştırmaları etiketlemenin bir yoludur; böylece bunları MLflow kullanıcı arayüzünde bir arada gruplandırılmış olarak görebilirsiniz. Örneğin, en iyi doğruluğu (veya performansı) elde etmek amacıyla farklı parametreler kullanarak birkaç modeli eğitmiş olabilirsiniz. Bu çalıştırmaları aynı deneme adıyla etiketlemek, bunları Denemeler sekmesinde birlikte gruplandıracaktır.

MLflow Python Paketini yükleyin.

MLflow Python paketi basit bir 'pip' kurulumudur. Python sanal ortamına kurmanızı öneririm.


 pip install mlflow


MLflow kitaplığını listeleyerek kurulumu bir kez daha kontrol edin.


 pip list | grep mlflow


Aşağıdaki kütüphaneyi görmelisiniz.


 mlflow 2.5.0

MinIO Python Paketini Kurun

MLflow özelliklerinden yararlanmak için doğrudan MinIO'ya erişmenize gerek yoktur; MLflow SDK, yukarıda kurduğumuz MinIO örneğiyle arayüz oluşturacaktır. Ancak verileri MLflow'a verilmeden önce yönetmek için doğrudan MinIO'nun bu örneğiyle arayüz oluşturmak isteyebilirsiniz. MinIO, her türlü yapılandırılmamış veriyi depolamanın harika bir yoludur. MinIO, temel donanımdan tam olarak yararlanır, böylece ihtiyacınız olan tüm ham verileri ölçek veya performans konusunda endişelenmeden kaydedebilirsiniz. MinIO, birden fazla konumdaki verileri senkronize halde tutmak için paket çoğaltma özelliklerini içerir. Ayrıca bir gün yapay zeka düzenlenecek; Bu gün geldiğinde, kullanımda olmayan verilerinizi güvence altına almak ve bir düzenleyici kurumun talep edebileceği bir şeyi yanlışlıkla silmediğinizden emin olmak için MinIO'nun kurumsal özelliklerine ( nesne kilitleme , sürüm oluşturma , şifreleme ve yasal kilitler ) ihtiyacınız olacak.


MLflow Python paketini sanal ortamda kurduysanız MinIO'yu da aynı ortama kurun.


 pip install minio


Kurulumu iki kez kontrol edin.

 pip list | grep minio


Bu, Minio kütüphanesinin kurulduğunu doğrulayacak ve kullandığınız sürümü görüntüleyecektir.

 minio 7.1.15

Özet

Bu gönderide, bir geliştirme makinesinde MLflow ve MinIO kurulumuna yönelik takip edilmesi kolay bir tarif sağlandı. Amaç, MLflow sunucularını ve docker-compose yapılandırmasını araştırmak için harcadığınız zamandan ve çabadan tasarruf etmenizi sağlamaktı.


Bu tarifin doğru kalması için her türlü çaba gösterildi. Bir sorunla karşılaşırsanız lütfen [email protected] adresine bir satır bırakarak veya genel Slack kanalımızdaki tartışmaya katılarak bize bildirin.


MLflow ve MinIO ile modelleri kodlamaya ve eğitmeye hazırsınız.


Burada da yayınlandı.