Az Exafunction támogatja az AWS Inferentiát a legjobb árteljesítmény elérése érdekében a PlatoBlockchain Data Intelligence gépi tanulási következtetéshez. Függőleges keresés. Ai.

Az Exafunction támogatja az AWS Inferentiát, hogy a legjobb árteljesítményt biztosítsa a gépi tanulási következtetésekhez

Az összes iparágban a gépi tanulási (ML) modellek egyre mélyebbek, a munkafolyamatok egyre összetettebbek, és a munkaterhelések nagyobb léptékben működnek. Jelentős erőfeszítéseket és erőforrásokat fektetnek a modellek pontosabbá tételére, mivel ez a befektetés közvetlenül jobb termékeket és tapasztalatokat eredményez. Másrészt ezeknek a modelleknek a termelésben való hatékony működése nem triviális vállalkozás, amelyet gyakran figyelmen kívül hagynak, annak ellenére, hogy kulcsfontosságú a teljesítmény- és költségvetési célok eléréséhez. Ebben a bejegyzésben bemutatjuk, hogyan Exafunction és AWS Inferentia működjenek együtt az éles ML modellek egyszerű és költséghatékony üzembe helyezése érdekében.

Exafunkció egy induló vállalkozás, amely arra összpontosít, hogy lehetővé tegye a vállalatok számára, hogy a lehető leghatékonyabban hajtsák végre az ML-t. Egyik termékük az ExaDeploy, egy könnyen használható SaaS-megoldás az ML-munkaterhelések nagyarányú kiszolgálására. Az ExaDeploy hatékonyan hangszereli az ML munkaterhelést vegyes erőforrások (CPU és hardveres gyorsítók) között, hogy maximalizálja az erőforrás-kihasználást. A hatékony és megbízható telepítés érdekében gondoskodik az automatikus méretezésről, a számítási helymegosztásról, a hálózati problémákról, a hibatűrésről és sok másról is. AWS Inferentia alapú Amazon EC2 Inf1 példányok célja, hogy a legalacsonyabb következtetésenkénti költséget biztosítsák a felhőben. Az ExaDeploy mostantól támogatja az Inf1-példányokat, amelyek lehetővé teszik a felhasználók számára, hogy mind a hardveralapú megtakarításokat a gyorsítókból, mind pedig a szoftver alapú megtakarításokat az optimalizált erőforrás-virtualizációból és -hangszerelésből – nagy méretekben elérjék.

Megoldás áttekintése

Hogyan oldja meg az ExaDeploy a telepítés hatékonyságát

A számítási erőforrások hatékony kihasználása érdekében mérlegelnie kell a megfelelő erőforrás-allokációt, az automatikus skálázást, a számítási helymeghatározást, a hálózati költségek és késleltetések kezelését, a hibatűrést, a verziószámítást és a reprodukálhatóságot stb. A léptékben minden hiányosság lényegesen befolyásolja a költségeket és a késleltetést, és sok nagyvállalat belső csapatok és szakértelem kialakításával orvosolta ezeket a hiányosságokat. A legtöbb vállalat számára azonban nem praktikus az általánosítható szoftverek kidolgozásának pénzügyi és szervezési többletköltségei felvállalása, amely nem a vállalat kívánt alapvető kompetenciája.

Az ExaDeploy célja, hogy megoldja ezeket a telepítési hatékonysággal kapcsolatos problémákat, beleértve azokat is, amelyek a legbonyolultabb munkaterheléseknél, például az autonóm jármű és a természetes nyelvi feldolgozás (NLP) alkalmazásoknál tapasztalhatók. Egyes nagy kötegelt ML-munkaterheléseknél az ExaDeploy több mint 85%-kal csökkentette a költségeket a várakozási idő vagy a pontosság feláldozása nélkül, az integrációs idő pedig mindössze egy mérnöki munkanap. Bebizonyosodott, hogy az ExaDeploy több ezer egyidejű hardvergyorsító erőforráspéldányt képes automatikusan skálázni és kezelni a rendszer romlása nélkül.

Az ExaDeploy főbb jellemzői a következők:

  • A felhőben fut: Egyik modellje, bemenete vagy kimenete sem hagyja el a magánhálózatát. Továbbra is használja felhőszolgáltatói kedvezményeit.
  • Megosztott gyorsítóerőforrások: Az ExaDeploy optimalizálja a használt gyorsítókat azáltal, hogy lehetővé teszi több modell vagy munkaterhelés megosztását a gyorsítóerőforrások megosztására. Azt is képes azonosítani, ha több munkaterhelés telepíti-e ugyanazt a modellt, majd megoszthatja a modellt ezekben a munkaterhelésekben, ezáltal optimalizálva a használt gyorsítót. Automatikus újraegyensúlyozási és csomópont-leürítési képességei maximalizálják a kihasználtságot és minimalizálják a költségeket.

Az Exafunction támogatja az AWS Inferentiát a legjobb árteljesítmény elérése érdekében a PlatoBlockchain Data Intelligence gépi tanulási következtetéshez. Függőleges keresés. Ai.

  • Skálázható kiszolgáló nélküli telepítési modell: Az ExaDeploy automatikus skálázása a gyorsító erőforrás-telítettsége alapján. Dinamikusan 0-ra vagy akár több ezer erőforrásra skálázható.
  • Különféle számítási típusok támogatása: A mélytanulási modelleket az összes főbb ML-keretrendszerből, valamint tetszőleges C++-kódot, CUDA-kerneleket, egyéni műveleteket és Python-függvényeket tölthet le.
  • Dinamikus modellregisztráció és verziószámítás: Új modellek vagy modellverziók regisztrálhatók és futtathatók a rendszer újraépítése vagy újratelepítése nélkül.
  • Pont-pont végrehajtás: Az ügyfelek közvetlenül csatlakoznak a távoli gyorsítóerőforrásokhoz, ami alacsony késleltetést és nagy átviteli sebességet tesz lehetővé. Akár távolról is tárolhatják az állapotot.
  • Aszinkron végrehajtás: Az ExaDeploy támogatja a modellek aszinkron végrehajtását, amely lehetővé teszi az ügyfelek számára, hogy párhuzamosítsák a helyi számítást a távoli gyorsító erőforrás-munkával.
  • Hibatűrő távoli csővezetékek: Az ExaDeploy lehetővé teszi az ügyfelek számára, hogy a távoli számításokat (modellek, előfeldolgozás stb.) dinamikusan csővezetékekké állítsák össze hibatűrési garanciával. Az ExaDeploy rendszer a pod- vagy csomópont-hibákat automatikus helyreállítással és újrajátszással kezeli, így a fejlesztőknek soha nem kell a hibatűrés biztosításán gondolkodniuk.
  • Kivételes felügyelet: Az ExaDeploy Prometheus mérőszámokat és Grafana irányítópultokat biztosít a gyorsító erőforrás-használatának és egyéb rendszermetrikák megjelenítéséhez.

Az ExaDeploy támogatja az AWS Inferentiát

Az AWS Inferentia-alapú Amazon EC2 Inf1 példányokat a mélytanulási specifikus következtetési munkaterhelésekhez tervezték. Ezek a példányok akár 2.3-szoros átvitelt és akár 70%-os költségmegtakarítást biztosítanak a GPU-következtetési példányok jelenlegi generációjához képest.

Az ExaDeploy mostantól támogatja az AWS Inferentiát, és együttesen felszabadítja a megnövelt teljesítményt és költségmegtakarítást, amelyet a célra épített hardveres gyorsítás és az optimalizált erőforrás-irányítás révén érhetünk el. Nézzük meg az ExaDeploy és az AWS Inferentia kombinált előnyeit egy nagyon gyakori modern ML-munkaterhelés figyelembevételével: a kötegelt, vegyes számítási munkaterheléseket.

A hipotetikus munkaterhelés jellemzői:

  • 15 ms csak CPU elő-/utófeldolgozás
  • Modellkövetkeztetés (15 ms GPU-n, 5 ms AWS Inferentián)
  • 10 ügyfél, mindegyik 20 ms-onként kér le
  • A CPU:Inferentia:GPU hozzávetőleges relatív költsége 1:2:4 (a c2.xlarge, inf5.xlarge és g1dn.xlarge Amazon EC4 On-Demand árazásán alapul)

Az alábbi táblázat bemutatja, hogyan alakulnak az egyes lehetőségek:

felépítés Szükséges források Költség Késleltetés
GPU ExaDeploy nélkül 2 CPU, 2 GPU kliensenként (összesen 20 CPU, 20 GPU) 100 30 ms
GPU ExaDeploy-tal 8 GPU megosztva 10 kliens között, kliensenként 1 CPU 42 30 ms
AWS Inferentia ExaDeploy nélkül 1 CPU, 1 AWS Inferentia kliensenként (összesen 10 CPU, 10 Inferentia) 30 20 ms
AWS Inferentia az ExaDeploy segítségével 3 AWS Inferentia megosztva 10 kliens között, kliensenként 1 CPU 16 20 ms

ExaDeploy az AWS Inferentián példa

Ebben a részben áttekintjük az ExaDeploy konfigurálásának lépéseit egy példán keresztül, amely egy BERT PyTorch modellen lévő inf1 csomópontokat tartalmaz. A bert-base modell átlagosan 1140 minta/másodperces átviteli sebességet tapasztaltunk, ami azt mutatja, hogy az ExaDeploy ehhez az egyetlen modellhez, egyetlen terheléses forgatókönyvhöz kevés vagy egyáltalán nem vezetett be többletköltséget.

1 lépés: Állítson be egy Amazon Elastic Kubernetes szolgáltatás (Amazon EKS) klaszter

Egy Amazon EKS-fürt hozható létre velünk Terraform AWS modul. Példánkban egy an inf1.xlarge az AWS Inferentia számára.

2 lépés: Az ExaDepoy beállítása

A második lépés az ExaDeploy beállítása. Általánosságban elmondható, hogy az ExaDeploy telepítése inf1 példányokon egyszerű. A telepítés többnyire ugyanazt az eljárást követi, mint a grafikus feldolgozóegység (GPU) példányain. Az elsődleges különbség az, hogy a modellcímkét GPU-ról AWS Inferentiára kell cserélni, és újra kell fordítani a modellt. Például a g4dn-ről az inf1-példányokra való áttéréshez az ExaDeploy alkalmazásprogramozási felületeivel (API-k) mindössze körülbelül 10 kódsort kellett módosítani.

  • Az egyik egyszerű módszer az Exafunction használata Terraform AWS Kubernetes modul or Helm diagram. Ezek telepítik az alapvető ExaDeploy-összetevőket az Amazon EKS-fürtben való futtatáshoz.
  • Fordítsa le a modellt soros formátumba (pl. TorchScript, TF mentett modellek, ONNX stb.). Az AWS Inferentia esetében követtük ez a bemutató.
  • Regisztrálja a lefordított modellt az ExaDeploy modul tárolójában.
    with exa.ModuleRepository(MODULE_REPOSITORY_ADDRESS) as repo:
       repo.register_py_module(
           "BertInferentia",
           module_class="TorchModule",
           context_data=BERT_NEURON_TORCHSCRIPT_AS_BYTES,
           config={
               "_torchscript_input_names": ",".join(BERT_INPUT_NAMES).encode(),
               "_torchscript_output_names": BERT_OUTPUT_NAME.encode(),
               "execution_type": "inferentia".encode(),
           },
       )

  • Készítse elő a modell adatait (azaz ne ExaDeploy-specific).
    tokenizer = transformers.AutoTokenizer.from_pretrained(
       "bert-base-cased-finetuned-mrpc"
    )
    
    batch_encoding = tokenizer.encode_plus(
       "The company Exafunction is based in the Bay Area",
       "Exafunction’s headquarters are situated in Mountain View",
       max_length=MAX_LENGTH,
       padding="max_length",
       truncation=True,
       return_tensors="pt",
    )

  • Futtassa a modellt távolról az ügyféltől.
    with exa.Session(
       scheduler_address=SCHEDULER_ADDRESS,
       module_tag="BertInferentia",
       constraint_config={
           "KUBERNETES_NODE_SELECTORS": "role=runner-inferentia",
           "KUBERNETES_ENV_VARS": "AWS_NEURON_VISIBLE_DEVICES=ALL",
       },
    ) as sess:
       bert = sess.new_module("BertInferentia")
       classification_logits = bert.run(
           **{
               key: value.numpy()
               for key, value in batch_encoding.items()
           }
       )[BERT_OUTPUT_NAME].numpy()
    
       # Assert that the model classifies the two statements as paraphrase.
       assert classification_logits[0].argmax() == 1

ExaDeploy és AWS Inferentia: Jobb együtt

Az AWS Inferentia kitágítja az átviteli sebesség határait a modellkövetkeztetéshez, és a legalacsonyabb következtetésenkénti költséget biztosítja a felhőben. Ennek ellenére a vállalatoknak megfelelő hangszerelésre van szükségük ahhoz, hogy széles körben élvezhessék az Inf1 ár-teljesítmény előnyeit. Az ML-szolgáltatás összetett probléma, amelyet házon belül kezelve olyan szakértelemre van szükség, amely nem tartozik a vállalat céljai közé, és gyakran késlelteti a termékek ütemezését. Az ExaDeploy, amely az Exafunction ML telepítési szoftvermegoldása, iparágvezetővé vált. Még a legösszetettebb ML-munkaterheléseket is kiszolgálja, miközben zökkenőmentes integrációs élményt és támogatást nyújt egy világszínvonalú csapattól. Az ExaDeploy és az AWS Inferentia együttesen nagyobb teljesítményt és költségmegtakarítást eredményezett a nagyszabású következtetési munkaterheléshez.

Következtetés

Ebben a bejegyzésben megmutattuk, hogy az Exafunction hogyan támogatja az AWS Inferentiát a teljesítmény-ML-hez. További információért az Exafunction segítségével történő alkalmazások építésével kapcsolatban látogassa meg a webhelyet Exafunkció. Az Inf1-re vonatkozó mély tanulási munkaterhelések kiépítésének bevált gyakorlataiért látogasson el ide Amazon EC2 Inf1 példányok.


A szerzőkről

Nicholas Jiang, szoftvermérnök, Exafunction

Jonathan Ma, szoftvermérnök, Exafunction

Prem Nair, szoftvermérnök, Exafunction

Anshul Ramachandran, szoftvermérnök, Exafunction

Shruti Koparkar, idősebb termékmarketing-menedzser, AWS

Időbélyeg:

Még több AWS gépi tanulás