MLflow
MLflow on avoimen lähdekoodin alusta, joka on suunniteltu sujuvoittamaan koneoppimisen (ML) elinkaarta. Se auttaa datatieteilijöitä ja insinöörejä hallitsemaan kokeita, seuraamaan mallien suorituskykyä ja ottamaan malleja käyttöön tehokkaasti. Sen joustavuus mahdollistaa integraation suosittuihin ML-kehyksiin, kuten TensorFlow’hun, PyTorchiin ja Scikit-learniin, mikä tekee sen liittämisestä mihin tahansa ML-työvuo'hon helppoa.
Lue lisää virallisesta MLflow-dokumentaatiosta.
MLflow’n käyttöönotto Rahdissa
MLflow voidaan ottaa Rahdissa käyttöön Helmillä joko Rahdin selainkäyttöliittymän Software Catalogissa tai Helm CLI:n kautta. Molemmissa tapauksissa voit lisätä omia arvoja oletusarvoisten Helm chart -arvojen korvaamiseksi, kuten on selitetty kohdassa Oletusarvojen korvaaminen.
Software Catalogin käyttäminen
-
Luo projekti Rahtiin ohjeen Projektin luominen mukaisesti.
-
Siirry MLflow Helm chartiin Rahdin Software Catalogissa:
- Napsauta vasemman reunan valikosta
Software CatalogkohdassaEcosystem. - Etsi MLflow hakukentällä.
- Napsauta MLflow Helm chartia.
- Napsauta vasemman reunan valikosta
-
Napsauta create-painiketta. Tämä avaa "Create Helm Release" -lomakkeen.
- Anna MLflow Helm releasellesi oma nimi "Release name" -valintaikkunassa.
- Kohdassa "Configuration via Form view / YAML view" voit lisätä omat arvosi oletusarvoisten Helm chart -arvojen korvaamiseksi. Jos otat tunnistautumisen käyttöön, arvo
authentication.adminPasswordon pakollinen. Muussa tapauksessa asennus epäonnistuu. - Asenna Helm release napsauttamalla create-painiketta.
- Siirry vasemman reunan valikossa kohtaan
Helm ReleasespolussaEcosystem->Helm. Siellä näet MLflow-releasesi tilan. Varmista, että olet oikeassa Rahti-projektissa. Jos kaikki meni hyvin, tilasarakkeessa näkyy "Deployed". - Jos MLflow tracking server julkaistiin
Route-objektin kautta, siirry vasemman reunan valikossa kohtaanRoutesosiossaNetworking. Täällä näet reitin päätepisteen Location-sarakkeessa. Käytä tätä päätepistettä MLflow tracking serverin käyttämiseen.
Helm CLI:n käyttäminen
- Asenna Helm CLI -työkalu omalle työasemallesi Helmin asennusohjeiden mukaisesti.
- Kirjaudu Rahtiin
ocCLI -työkalulla ohjeen Kirjautuminenoc:lla mukaisesti. -
Luo projekti Rahtiin:
-
Lisää cscfi Helm chart -repositorio:
Varmista ennen jatkamista, että saat repositoriosta uusimmat chartit:
-
Asenna MLflow Helm chart cscfi-repositoriosta:
Voit lisätä omia arvojasi oletusarvoisten chart-arvojen korvaamiseksi käyttämällä yllä olevassa komennossa
--set-valitsinta. Jos omia arvoja on useita, voit sijoittaa ne kaikki yhteenvalues.yaml-tiedostoon ja viitata siihen yllä olevassa komennossa-f values.yaml-valitsimella. Jos otat tunnistautumisen käyttöön, arvoauthentication.adminPasswordon pakollinen. Muussa tapauksessa asennus epäonnistuu. -
Helm-käyttöönoton tilan tarkistaminen:
Tila-kentässä pitäisi näkyä "Deployed", jos Helm-käyttöönotto onnistui.
-
Jos MLflow tracking server julkaistiin
Ingress-objektin kautta (katso Ingress), käytä seuraavaa komentoa tracking serverin päätepisteen hakemiseen:Päätepiste näkyy HOST/PORT-sarakkeessa. Rahti luo tämän
Route-objektin automaattisestiIngress-objektista.Isäntänimelle verkkotunnuksen
*.rahtiapp.fialla, esimerkiksimlflow-my-namespace.rahtiapp.fi, luodaan automaattisesti DNS-tietue ja kelvollinen TLS-varmenne. Jos haluat käyttää sen sijaan omaa verkkotunnustasi, katso sivu Mukautetut verkkotunnukset.
Oletusarvojen korvaaminen
cscfi:n MLflow Helm chartissa sekä siihen liittyvässä MLflow-yhteisön MLflow chartissa on useita oletusarvoja, joita loppukäyttäjä voi korvata tarpeidensa mukaan. Alla selitetään joitakin yleisesti korvattavia arvoja.
Kaksinkertainen mlflow-sisäkkäisyys
Jotkin alla olevista arvoista käyttävät kaksinkertaista mlflow-sisäkkäisyyttä (mlflow.mlflow.*). Tämä on tarkoituksellista: cscfi:n wrapper chart välittää arvoja riippuvuuden alichartille, jonka nimi on myös mlflow, ja alichart ryhmittelee sovellusasetuksensa oman mlflow-osionsa alle. Väärälle sisäkkäisyystasolle sijoitetut arvot Helm ohittaa hiljaisesti.
Tietokanta
Tietokannan käyttäminen MLflow’n backend store -ratkaisuna tarjoaa skaalautuvan, luotettavan ja kyselytehokkaan perustan kokeiden seurantaan ja mallien elinkaaren hallintaan. Oletuksena MLflow käyttää sisäänrakennettua paikallista SQLite-tietokantaa metadatan tallentamiseen. Tuotantoympäristöissä suositellaan kuitenkin käyttämään ulkoista tietokantaesiintymää, jossa on tavanomaiset yritystason ominaisuudet, kuten varmuuskopiot ja korkea käytettävyys, esimerkiksi Pukki DBaaS -palvelun PostgreSQL-tietokantaa. Ulkoisen tietokannan käyttämiseksi on asetettava seuraava arvo:
mlflow:
mlflow:
backendStoreUri: "postgresql://{USERNAME}:{PASSWORD}@{DB_PUBLIC_IP/DOMAIN}:5432/mlflow"
Varmista, että korvaat PostgreSQL-muuttujille USERNAME, PASSWORD ja DB_PUBLIC_IP/DOMAIN oikeat arvot. Voit myös tallentaa tietokannan URI:n Kubernetes Secretiin, jotta tunnistetietoja ei tarvitse paljastaa arvotiedostoissa:
oc create secret generic mlflow-db-secret \
--namespace <your project name> \
--from-literal=uri="postgresql://{USERNAME}:{PASSWORD}@{DB_PUBLIC_IP/DOMAIN}:5432/mlflow"
Viittaa Secretiin arvotiedostossasi:
S3-tallennustausta
Objektitallennuksen, kuten Allaksen, käyttäminen S3:n kautta MLflow’n artifact storage backendinä tarjoaa kestävän, erittäin käytettävän ja käytännössä rajattoman tallennustilan suurille malliartifakteille, aineistoille ja lokeille. Se keskittää artifaktien hallinnan kaikille kokeille ja ympäristöille mahdollistaen skaalautuvan, kustannustehokkaan säilytyksen ja artifaktien helpon jakamisen tiimien ja infrastruktuurien välillä.
MLflow Helm chart -arvot, jotka on asetettava Allas-S3-yhteyttä varten, ovat seuraavat:
mlflow:
mlflow:
defaultArtifactRoot: "mlflow-artifacts:/"
artifactsDestination: "s3://my-bucket/mlflow"
env:
- name: MLFLOW_S3_ENDPOINT_URL
value: "https://a3s.fi"
- name: AWS_ACCESS_KEY_ID
value: "abc123"
- name: AWS_SECRET_ACCESS_KEY
value: "xxxx"
- name: AWS_REQUEST_CHECKSUM_CALCULATION
value: "when_required"
- name: AWS_RESPONSE_CHECKSUM_VALIDATION
value: "when_required"
Access key ja secret key ovat Allas-projektisi S3-tunnistetiedot. Katso sivulta objektitallennus, miten ne luodaan. Kahta AWS checksum -muuttujaa tarvitaan yhteensopivuuteen uudempien AWS-asiakkaiden ja Allaksen välillä.
Tunnistautuminen
MLflow’ssa on sisäänrakennettu HTTP Basic Authentication, mutta se täytyy ottaa käyttöön ja se vaatii Flaskin salaisen avaimen. Chart luo mlflow-auth-secret- ja mlflow-auth-config-Secretit automaattisesti, kun tunnistautuminen otetaan käyttöön. Lisää seuraavat arvot omilla arvoillasi korvattuina:
authentication:
enabled: true
adminPassword: I_am_a_long_password_123
database_uri: ""
mlflow:
server:
value_options:
app_name: "basic-auth"
env:
- name: MLFLOW_FLASK_SERVER_SECRET_KEY
valueFrom:
secretKeyRef:
name: mlflow-auth-secret
key: secret-key
- name: MLFLOW_AUTH_CONFIG_PATH
value: /etc/mlflow/auth/basic_auth.ini
extraVolumes:
- name: auth-config
secret:
secretName: mlflow-auth-config
extraVolumeMounts:
- name: auth-config
mountPath: /etc/mlflow/auth
readOnly: true
Ingress
Ingress-objekti on luotava, jotta MLflow tracking server voidaan julkaista internetiin. Ingress on oletuksena pois käytöstä, joten se on otettava erikseen käyttöön. Lisää seuraavat arvot ja korvaa host-kenttä omalla verkkotunnuksellasi:
mlflow:
ingress:
enabled: true
hosts:
- host: mlflow-my-namespace.rahtiapp.fi
paths:
- path: /
pathType: Prefix
server:
value_options:
allowed_hosts: "mlflow-my-namespace.rahtiapp.fi"
cors_allowed_origins: "https://mlflow-my-namespace.rahtiapp.fi"
Roskien keruu
MLflow poistaa kokeita ja ajoja vain pehmeästi, joten poistetut kohteet jäävät backend storeen ja artifact storageen, kunnes ne poistetaan pysyvästi. Chart tarjoaa valinnaisen CronJobin, joka suorittaa säännöllisesti komennon mlflow gc. Se on oletuksena pois käytöstä, ja sen voi ottaa käyttöön seuraavasti:
Chartin oletusarvoinen pod affinity ajoittaa roskienkeruutyön samalle noodille tracking serverin kanssa, mikä on tarpeen käytettäessä oletusarvoista persistent volume -tallennusta (taltio voidaan liittää vain yhteen noodiin kerrallaan).
Arvotiedosto
Koska omia arvoja on useita, on parempi käyttää yhtä arvotiedostoa kuin asettaa ne suoraan komentorivillä. Tämä voidaan tehdä käyttämällä values.yaml-tiedostoa alla olevan esimerkin mukaisesti ja viittaamalla siihen helm install -komennossa -f-valitsimella.
authentication:
enabled: true
adminPassword: I_am_a_long_password_123
database_uri: ""
mlflow:
server:
value_options:
app_name: "basic-auth"
allowed_hosts: "mlflow-my-namespace.rahtiapp.fi"
cors_allowed_origins: "https://mlflow-my-namespace.rahtiapp.fi"
env:
- name: MLFLOW_FLASK_SERVER_SECRET_KEY
valueFrom:
secretKeyRef:
name: mlflow-auth-secret
key: secret-key
- name: MLFLOW_AUTH_CONFIG_PATH
value: /etc/mlflow/auth/basic_auth.ini
- name: MLFLOW_S3_ENDPOINT_URL
value: "https://a3s.fi"
- name: AWS_ACCESS_KEY_ID
value: "abc123"
- name: AWS_SECRET_ACCESS_KEY
value: "xxxx"
- name: AWS_REQUEST_CHECKSUM_CALCULATION
value: "when_required"
- name: AWS_RESPONSE_CHECKSUM_VALIDATION
value: "when_required"
extraVolumes:
- name: auth-config
secret:
secretName: mlflow-auth-config
extraVolumeMounts:
- name: auth-config
mountPath: /etc/mlflow/auth
readOnly: true
mlflow:
backendStoreUri: "postgresql://{USERNAME}:{PASSWORD}@{DB_PUBLIC_IP/DOMAIN}:5432/mlflow"
defaultArtifactRoot: "mlflow-artifacts:/"
artifactsDestination: "s3://my-bucket/mlflow"
garbageCollection:
enabled: true
schedule: "0 2 * * 0"
olderThan: "30d"
ingress:
enabled: true
hosts:
- host: mlflow-my-namespace.rahtiapp.fi
paths:
- path: /
pathType: Prefix
Lisätietoja
- MLflow-dokumentaatio — tracking serverin ja sen asiakkaiden ensisijainen viitedokumentaatio.
- Rahti-katalogi — miten Helm charteja selataan ja asennetaan Rahdissa.
- Objektitallennus — Allaksen käyttö Rahdista, mukaan lukien S3-tunnistetietojen hankkiminen.
- Pukki DBaaS — CSC:n hallinnoidut PostgreSQL-tietokannat.
- Mukautetut verkkotunnukset — tracking serverin julkaiseminen oman verkkotunnuksen alla.