Hyppää sisältöön

A new version of SD Connect and SD Desktop will be available from Monday, September 28. The major upgrade will introduce significant improvements, but also includes changes that are not compatible with the current version of the service. Click here to review the available support materials.

Warning!

Puhti and Mahti computing services have been decommissioned and no new jobs are accepted or executed on its compute nodes. Puhti and Mahti login nodes and storage services are planned to remain available until 15 October 2026. Clean up unnecessary files and move any data you need to keep by 31 August 2026. See the Roihu data migration guide for instructions on transferring your data to Roihu.

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

  1. Luo projekti Rahtiin ohjeen Projektin luominen mukaisesti.

  2. Siirry MLflow Helm chartiin Rahdin Software Catalogissa:

    • Napsauta vasemman reunan valikosta Software Catalog kohdassa Ecosystem.
    • Etsi MLflow hakukentällä.
    • Napsauta MLflow Helm chartia.
  3. Napsauta create-painiketta. Tämä avaa "Create Helm Release" -lomakkeen.

  4. Anna MLflow Helm releasellesi oma nimi "Release name" -valintaikkunassa.
  5. 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.adminPassword on pakollinen. Muussa tapauksessa asennus epäonnistuu.
  6. Asenna Helm release napsauttamalla create-painiketta.
  7. Siirry vasemman reunan valikossa kohtaan Helm Releases polussa Ecosystem -> Helm. Siellä näet MLflow-releasesi tilan. Varmista, että olet oikeassa Rahti-projektissa. Jos kaikki meni hyvin, tilasarakkeessa näkyy "Deployed".
  8. Jos MLflow tracking server julkaistiin Route-objektin kautta, siirry vasemman reunan valikossa kohtaan Routes osiossa Networking. 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

  1. Asenna Helm CLI -työkalu omalle työasemallesi Helmin asennusohjeiden mukaisesti.
  2. Kirjaudu Rahtiin oc CLI -työkalulla ohjeen Kirjautuminen oc:lla mukaisesti.
  3. Luo projekti Rahtiin:

    oc new-project <your project name> --description="csc_project: <csc_project_number>"
    
  4. Lisää cscfi Helm chart -repositorio:

    helm repo add cscfi https://cscfi.github.io/helm-charts/
    

    Varmista ennen jatkamista, että saat repositoriosta uusimmat chartit:

    helm repo update
    
  5. Asenna MLflow Helm chart cscfi-repositoriosta:

    helm install <your release name> -n <your project name> cscfi/mlflow
    

    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 yhteen values.yaml-tiedostoon ja viitata siihen yllä olevassa komennossa -f values.yaml -valitsimella. Jos otat tunnistautumisen käyttöön, arvo authentication.adminPassword on pakollinen. Muussa tapauksessa asennus epäonnistuu.

  6. Helm-käyttöönoton tilan tarkistaminen:

    helm status <your release name> -n <your project name>
    

    Tila-kentässä pitäisi näkyä "Deployed", jos Helm-käyttöönotto onnistui.

  7. Jos MLflow tracking server julkaistiin Ingress-objektin kautta (katso Ingress), käytä seuraavaa komentoa tracking serverin päätepisteen hakemiseen:

    oc get routes --namespace=<your project name>
    

    Päätepiste näkyy HOST/PORT-sarakkeessa. Rahti luo tämän Route-objektin automaattisesti Ingress-objektista.

    Isäntänimelle verkkotunnuksen *.rahtiapp.fi alla, esimerkiksi mlflow-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:

mlflow:
  mlflow:
    backendStoreUriFrom:
      secretKeyRef:
        name: mlflow-db-secret
        key: uri

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:

mlflow:
  garbageCollection:
    enabled: true
    schedule: "0 2 * * 0"
    olderThan: "30d"

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

Suomenkielinen tekoälykäännös

Sisällössä voi esiintyä virheellistä tietoa tekoälykäännöksestä johtuen.

Klikkaa tästä antaaksesi palautetta