Hyppää sisältöön

Docs CSC now features an automatic Finnish translation. Click here for more information.

Warning!

Puhti and Mahti will be decommissioned after Roihu becomes available. Users should clean up unnecessary files and move any required data by the end of August 2026. See the Roihu data preparation instructions for details.

Puhti scratch is very full: keep only active data there and move or delete everything else. No new Puhti scratch quota will be granted.

Ray: koneoppimisen viitekehys pilveen

Johdanto

Kun koneoppimisen (ML) työkuormat kasvavat mittakaavaltaan ja monimutkaisuudeltaan, laskentaresurssien tehokas hyödyntäminen tulee olennaiseksi. Olipa kyse yhden suorituskykyisen virtuaalikoneen (VM) tai klusterin käytöstä, hajautetun laskennan ja rinnakkaisen prosessoinnin hallinta voi olla haastavaa.

Ray vastaa näihin haasteisiin tarjoamalla yhtenäisen viitekehyksen, joka yksinkertaistaa ML-työkuormien skaalaamista CPU:iden, GPU:iden ja usean noodin VM-klustereiden välillä.

Mikä Ray on

Ray on avoimen lähdekoodin hajautetun laskennan viitekehys, joka on rakennettu helpottamaan Python- ja koneoppimis(ML)-työkuormien skaalaamista. Rayn avulla voit suorittaa laskentaa saumattomasti useilla CPU:illa, GPU:illa tai virtuaalikoneilla (VM) — olivatpa ne paikallisessa ympäristössä tai pilvessä.

Rayta kehittää Anyscale, ja siitä on tulossa suosittu valinta datatieteilijöille ja ML-insinööreille, jotka haluavat skaalata koulutus-, viritys- ja palvelutyökuormia ilman monimutkaisen hajautetun infrastruktuurin hallintaa.

Suorittamalla Rayta Pouta-virtuaalikoneilla voit hyödyntää skaalautuvaa laskentatehoa ja samalla pitää työnvuosi joustavina.

Lisätietoja löytyy täältä

Ray-viitekehys

Ray-viitekehys koostuu kolmesta kerroksesta:

Ray Core

Ray Core on Ray-viitekehyksen perusta. Sen avulla Python-ohjelmasi voivat käyttää kaikkea saatavilla olevaa laskentatehoa riippumatta siitä, työskenteletkö yhdellä VM:llä vai usean VM:n klusterissa. Sen sijaan, että tehtävät suoritettaisiin yksi toisensa jälkeen, Ray Core voi suorittaa monta tehtävää samanaikaisesti. Voit kirjoittaa tavallisen Python-funktion, ja Ray hoitaa rinnakkaisen suorituksen automaattisesti. Tämä tarkoittaa, että sinun ei tarvitse hallita säikeitä, prosesseja tai klusterin välistä viestintää manuaalisesti. Jos jokin tehtävä epäonnistuu, Ray voi yrittää sitä uudelleen, mikä pitää ohjelmasi luotettavana. Lyhyesti sanottuna Ray Core auttaa käyttämään laitteistoasi tehokkaammin ja nopeuttaa työtäsi ilman, että se vaatii monimutkaista ohjelmointia.

Rayn AI-kirjastot

Ray tarjoaa joukon avoimen lähdekoodin, Python-pohjaisia, käyttötarkoituskohtaisia kirjastoja. Jokainen kirjasto on tarkoitettu tiettyyn tehtävään.

Ray Data

Ray Data auttaa suurten aineistojen valmistelussa ja käsittelyssä ennen koulutusta. Sen sijaan, että kaikki kuormitus kohdistuisi yhteen koneeseen, Ray Data jakaa työn useille CPU-ytimille tai useille VM:ille sen mukaan, mitä resursseja on käytettävissä. Tämä tarkoittaa, että data voidaan ladata, puhdistaa ja muuntaa paljon nopeammin. Se myös suoratoistaa käsitellyn datan suoraan Ray Trainiin koulutuksen aikana, jotta mallin ei tarvitse odottaa dataa. Tämä välttää pullonkauloja ja pitää koulutuksen sujuvana ja tehokkaana. Tässä on joitakin esimerkkejä

Ray Train

Ray Train auttaa kouluttamaan koneoppimismalleja nopeammin jakamalla koulutustyökuorman käytettävissä oleville CPU:ille ja GPU:ille. Olipa kokoonpanosi yksi VM, jossa on useita GPU-kortteja, tai monta toisiinsa yhdistettyä VM:ää, Ray Train voi käyttää kaikkia näitä resursseja samanaikaisesti. Se tukee suosittuja ML-viitekehyksiä, kuten PyTorchia, TensorFlow’ta ja XGBoostia, joten sinun ei tarvitse muuttaa olemassa olevaa mallikoodiasi. Jos kone tai GPU vikaantuu koulutuksen aikana, Ray Train voi jatkaa siitä ilman edistymisen menetystä. Tämä tekee suurten mallien kouluttamisesta nopeampaa, vakaampaa ja helpommin hallittavaa. Tässä on joitakin esimerkkejä

Ray Tune

Ray Tune tekee hyperparametrien virittämisestä nopeampaa ja tehokkaampaa. Ray Tune on suunniteltu nopeuttamaan parhaiden hyperparametrien löytämistä koneoppimismalleille. Tavallisesti viritys vaatii monien koulutuskokeiden suorittamista yksi kerrallaan, mikä voi kestää päiviä. Ray Tune voi suorittaa monta koetta rinnakkain kaikilla käytettävissä olevilla CPU- ja GPU-resursseilla, joko yhdellä VM:llä tai klusterissa. Se myös pysäyttää automaattisesti heikosti suoriutuvat kokeet ja keskittää laskentaresurssit niihin, jotka toimivat hyvin. Tämä auttaa vähentämään sekä aikaa että kustannuksia ja samalla parantaa mallin tarkkuutta. Tässä on joitakin esimerkkejä

Ray Serve

Ray Serve tekee koneoppimismallien käyttöönotosta helppoa, jotta niitä voidaan käyttää oikeissa sovelluksissa. Kun mallisi on koulutettu, Ray Serve mahdollistaa sen tarjoamisen web API:n kautta, jotta käyttäjät tai sovellukset voivat lähettää syötteitä ja vastaanottaa ennusteita. Se voi toimia yhdellä VM:llä tai skaalautua useille VM:ille liikenteen määrän mukaan. Jos pyyntöjä tulee enemmän, Ray Serve voi automaattisesti kasvattaa mallireplikoiden määrää ja tasapainottaa pyynnöt niiden välillä. Tämä varmistaa, että palvelusi pysyy nopeana ja luotettavana tuotantoympäristöissä. Tässä on joitakin esimerkkejä

Ray RLlib

Ray RLlib keskittyy vahvistusoppimiseen. Se nopeuttaa RL-agenttien koulutusta suorittamalla monta erilaista ympäristösimulaatiota samanaikaisesti. Sen sijaan, että koulutus tapahtuisi hitaasti yhdessä ympäristössä, RLlib käyttää useita CPU:ita ja GPU:ita yhdellä tai useammalla VM:llä kokemuksen keräämiseen ja nopeampaan oppimiseen. Se tukee monia RL-algoritmeja valmiiksi, joten voit aloittaa nopeasti ilman, että kaikkea tarvitsee rakentaa alusta asti. Tämä tekee RLlibistä hyödyllisen esimerkiksi robotiikassa, simulaatiopohjaisessa ohjauksessa ja älykkäissä päätöksentekojärjestelmissä. Tässä on joitakin esimerkkejä

Ray-klusterit

Ray-klusteri on ryhmä yhdestä tai useammasta VM:stä, jotka toimivat yhdessä kuin yksi suuri kone. Ray-klusterissa on kahdenlaisia noodeja: Head Node ja yksi tai useampi Worker Node. Head Node hallitsee klusteria, seuraa resursseja (kuten CPU:ita, GPU:ita ja muistia) ja koordinoi työtehtäviä. Worker Nodet tekevät varsinaisen laskennan. Kun yhdistät Python-ohjelmasi klusteriin, Ray käyttää automaattisesti kaikkia käytettävissä olevia CPU:ita ja GPU:ita kaikilla koneilla. Tämä tarkoittaa, että jos lisäät klusteriin enemmän VM:iä, ohjelmasi, koulutustyösi ja datankäsittelytehtäväsi voivat skaalautua ilman koodimuutoksia. Ray huolehtii viestinnästä, resurssien ajastuksesta ja töiden suorittamisesta sisäisesti. Tämä tekee Ray-klustereista erittäin hyödyllisiä koneoppimisen, hajautetun datankäsittelyn tai vahvistusoppimistehtävien suorittamiseen Pouta-ympäristössä.

Ray Dashboard

Ray Dashboard on yksinkertainen verkkosivu, joka näyttää, mitä Ray tekee. Sen avulla näet, kuinka monta CPU:ta ja GPU:ta on käytössä, mitkä tehtävät ovat käynnissä ja toimiiko järjestelmä sujuvasti. Tämä on hyödyllistä käytettäessä useita VM:iä, koska voit helposti ymmärtää järjestelmän toimintaa ilman lokien tai terminaalien tarkistamista.

Voit nähdä dashboardin luomalla SSH-tunnelin virtuaalikoneeltasi. Jos työskentelet useilla VM:illä, sinun täytyy luoda tunneli head-virtuaalikoneelta.

Virtuaalikoneella, jos olet aloittanut Rayn käytön ilman dashboard-yhteyttä, sinun täytyy ensin pysäyttää Ray ja käynnistää se sitten include-dashboard-asetuksella seuraavilla komennoilla:

ray stop --force
ray start --head --include-dashboard true --dashboard-host 0.0.0.0
Tämän jälkeen sinun täytyy luoda SSH-tunneli paikalliselta koneeltasi komennolla:

ssh -L 8265:localhost:8265 username@HEAD_VM_IP
Avaa sitten selain ja siirry osoitteeseen
http://localhost:8265

Miten Ray auttaa koneoppimisessa Poudassa

Ray huolehtii monista haasteista, joita voi ilmetä ajettaessa ML-työkuormaa useilla virtuaalikoneilla, kuten hajautettujen prosessien hallinnasta, datan synkronoinnista noodien välillä, laskentakuormien tasapainottamisesta sekä automaattisesta skaalauksesta ja vikasietoisuudesta.

Voit aloittaa yhdellä VM:llä ja skaalata moneen ilman koodimuutoksia. Ray käyttää automaattisesti käytettävissä olevia CPU/GPU-resursseja VM:ien välillä. Se voi lisätä tai poistaa VM:iä dynaamisesti nykyisen tarpeen mukaan.

Rayn käyttö Poudassa

Voit asentaa Rayn virtuaalikoneillesi komennolla:

pip install -U ray
Lisätietoja asennuksesta on saatavilla täältä

Yhdellä VM:llä

Jos sinulla on yksi VM, jossa on useita ytimiä, esimerkiksi 6 CPU:ta ja 1 GPU, Ray voi käyttää niitä kaikkia automaattisesti. Sinun täytyy asentaa Ray kyseiselle koneelle, ja voit käyttää sitä suoraan Python-koodissasi. Voit tarkistaa koodin suoritusajan eron, kun sitä ajetaan normaalisti (sarjallinen käsittely) ja kun käytetään Rayta (rinnakkainen käsittely).

Kun et käytä Rayta, laskenta tapahtuu sarjallisesti. Kokeile tätä koodia:

import time

def f(x):
    time.sleep(2)
    return x * x

start = time.time()
results = [f(i) for i in range(12)]  # 12 tasks
print(results)
print("Time taken:", time.time() - start)  
Tässä koodissa 12 tehtävälle annetaan 2 sekunnin odotusaika. Siksi suorituksen pitäisi kestää lähes 24 sekuntia.

Kokeile nyt seuraavaa koodia:

import ray
import time

ray.init()  # Ray will detect and use all available cores

@ray.remote
def f(x):
    time.sleep(2)
    return x * x

start = time.time()
results = ray.get([f.remote(i) for i in range(12)])
print(results)
print("Time taken:", time.time() - start)
Tässä koodissa, kun alustat Rayn, se jakaa tehtävät automaattisesti käytettävissä olevien resurssien mukaan. Jos sinulla on 6 CPU-ydintä, se lyhentää ajan lähes kuudesosaan.

Kuten näet molemmissa koodeissa, ainoa ero on se, että toisessa koodissa import Ray -rivin jälkeen lisätään koristelija @ray.remote ja funktiokutsu tehdään .remote()-muodossa. Tämä kertoo Raylle, että funktion tulee suorittua rinnakkain useilla CPU:illa tai GPU:illa. Funktion sisäistä logiikkaa ei tarvitse muuttaa. Ohjelmasi toimii samalla tavalla — ainoa lisävaihe on, että Ray huolehtii työn jakamisesta käytettävissä oleville resursseille (kuten useille CPU-ytimille tai useille VM:ille). Sen sijaan, että kirjoittaisit koko koodisi uudelleen, teet vain pienen muutoksen siihen, miten kutsut funktioita. Juuri tämä tekee Raysta helppokäyttöisen — saat paremman suorituskyvyn ja skaalautuvuuden lähes ilman koodimuutoksia.

Useilla VM:illä

Kun työskentelet useilla VM:illä, sinun täytyy määrittää Ray-klusteri.

  • Ensimmäiseksi asenna Ray kaikille noodeille

  • Head-virtuaalikoneella

    ray start --head --port=6379
    

  • Komento tulostaa Ray-klusterin osoitteen, joka voidaan välittää ray start -komennolle muilla koneilla worker-noodien käynnistämiseksi.
ray start --address=<head-node-address:port>
  • Nyt voit käyttää Rayta Python-koodissasi. Ray jakaa työn nyt automaattisesti kaikille VM:ille.
import ray
import time

ray.init(address="auto")  # Ray will connect to the cluster

@ray.remote
def f(x):
    time.sleep(2)
    return x * x

start = time.time()
results = ray.get([f.remote(i) for i in range(12)])
print(results)
print("Time taken:", time.time() - start)

Suomenkielinen tekoälykäännös

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

Klikkaa tästä antaaksesi palautetta