paint-brush
Paano I-scale ang AI Infrastructure Gamit ang Kubernetes at Dockersa pamamagitan ng@dataengonline
Bagong kasaysayan

Paano I-scale ang AI Infrastructure Gamit ang Kubernetes at Docker

sa pamamagitan ng Natapong Sornprom6m2025/02/15
Read on Terminal Reader

Masyadong mahaba; Upang basahin

Ang mga kumpanya ay lalong gumagamit ng mga imprastraktura ng artificial intelligence (AI) para mag-host at mamahala ng mga autonomous na workload. Tinitiyak ng scalability na kakayanin ng mga AI system ang pagtaas ng workload nang walang anumang pagkawala ng performance. Ginagamit ng mga organisasyon ang Docker at Kubernetes upang matugunan ang mga naturang pangangailangan.
featured image - Paano I-scale ang AI Infrastructure Gamit ang Kubernetes at Docker
Natapong Sornprom HackerNoon profile picture
0-item
1-item

Ang mga kumpanya ay lalong gumagamit ng mga imprastraktura ng artificial intelligence (AI) para mag-host at mamahala ng mga autonomous na workload. Dahil dito, nagkaroon ng malaking pangangailangan para sa scalable pati na rin ang mga nababanat na imprastraktura na makakatugon sa magkakaibang aplikasyon o mga kinakailangan sa ulap. Ginagamit ng mga organisasyon Kubernetes at Docker upang matugunan ang mga ganoong pangangailangan dahil napagtanto ng mga kumpanya na pareho silang lubos na epektibong mga kaso ng paggamit na naghahatid ng mga nasusukat na imprastraktura ng AI.


Ang pag-deploy ng imprastraktura ng AI ay karaniwang nagbibigay ng sapat na kapangyarihan sa pag-compute para magsagawa at magproseso ng malalaking dataset. Ang mga kahilingang ito ay maaaring isalin sa pangangailangan para sa mga nasusukat na pamamaraan na nagbibigay-daan sa mga modelo ng AI na tumakbo sa malalaking karga ng trabaho nang hindi nakakasama sa pagganap.

Bakit Kailangang Palakihin ng Mga Kumpanya ang Kanilang AI Infrastructure

Mga sistema ng AI , gayunpaman, ay masinsinang mapagkukunan din, karaniwang hinihingi ang parehong mataas na kapasidad sa pag-compute at ang kakayahang magproseso ng mataas na antas ng data. Habang kinakailangan ang mas advanced na mga AI application at mas malaking sukat, nagiging mas kritikal ang scalability. Tinitiyak ng scalability na kakayanin ng mga AI system ang pagtaas ng workload nang walang anumang pagkawala ng performance.

Pagpapalawak ng Dami ng Data

Ang lumalaking dami ng data ay isang alalahanin para sa mga AI system sa maraming aspeto. Karamihan sa mga modelo ng AI, lalo na ang mga nakabatay sa malalim na pag-aaral, ay lubos na nakadepende sa malaking halaga ng data sa panahon ng pagsasanay at hinuha. Gayunpaman, nang walang sapat na nasusukat na imprastraktura, pagpoproseso at pagbibigay-kahulugan sa ganoon napakalaking dami ng data ay isang roadblock .

Na-optimize na Pagganap

Sinusuportahan ng scalable AI hardware ang maaasahan at matatag na performance sa kabila ng napakaraming computational load. Sa Kubernetes, ang pahalang na pag-scale ng mga trabaho sa AI ay madali, at ang dynamic na pagbabago ng laki ng mga numero ng replica ay maaaring gawin bilang isang function ng pangangailangan. Sa kabaligtaran, sinusuportahan ng mga container ng Docker ang mga lean, nakahiwalay na kapaligiran para sa pagpapatakbo ng mga modelo ng AI kung saan ang salungatan sa mapagkukunan ay hindi isang bottleneck sa pagganap.

Mabisang Pamamahala ng Mapagkukunan

Ang mahusay na paggamit ng mga mapagkukunan ay ang susi sa cost-effective at napapanatiling AI deployment. Ang mga kahilingan at limitasyon ng mapagkukunan ng Kubernetes ay nagbibigay-daan para sa mahusay na pamamahala ng CPU at memory resource sa pamamagitan ng pag-iwas sa underprovisioning at overprovisioning. Pinupunan ng pamamahala ng mapagkukunan ng Docker ang puwang sa pamamagitan ng paghihiwalay ng mga mapagkukunan ng lalagyan.

Pag-scale ng AI Infrastructure Gamit ang Kubernetes at Docker

Ang Containerization ay isa sa mga milestone sa ebolusyon ng scalable na imprastraktura ng artificial intelligence. Tinitiyak ng containerization ng AI application at mga dependency nito sa isang Docker container ang pare-pareho sa buong development, testing, at deployment environment.


Una, kailangan mong tukuyin ang isang Dockerfile upang mai-install ang kapaligiran. Ang Dockerfile ay isang serye ng mga tagubilin tungkol sa kung paano bumuo ng isang imahe ng Docker. Nagdedeklara ito ng batayang larawan, ang mga dependency na kinakailangan, at ang mga paunang command sa pag-setup na nalalapat sa iyong app. Ang sumusunod ay isang pangunahing Dockerfile para sa isang modelo ng Python machine-learning:


 # Use an official Python runtime as a parent image FROM python:3.9-slim # Set the working directory in the container WORKDIR /usr/src/app # Copy the current directory contents into the container COPY . . # Install any needed packages specified in requirements.txt RUN pip install --no-cache-dir -r requirements.txt # Expose the port the app runs on EXPOSE 5000 # Define environment variable ENV NAME World # Run the app CMD ["python", "./app.py"]


Kung handa na ang Dockerfile, maaari kang bumuo ng imahe ng Docker at patakbuhin ang lalagyan. Patakbuhin ang sumusunod na mga utos:

 # Build the Docker image docker build -t ml-model:latest . # Run the container docker run -p 5000:5000 ml-model:latest


Pag-deploy ng Dockerized AI Model sa Kubernetes

Kubernetes nagbibigay ng malawak na hanay ng mga feature ng orkestra na nagbibigay-daan sa mahusay na pamamahala ng application sa containerized na imprastraktura. Tinitiyak ng pag-deploy ng imahe ng Docker sa Kubernetes na palaging tumatakbo ang isang tiyak na bilang ng mga replika ng application. Ang sumusunod ay isang halimbawa ng deployment.yaml file na magagamit mo i-deploy ang iyong Dockerized machine learning model :


 apiVersion: apps/v1 kind: Deployment metadata: name: ml-model-deployment spec: replicas: 3 selector: matchLabels: app: ml-model template: metadata: labels: app: ml-model spec: containers: - name: ml-model-container image: ml-model:latest ports: - containerPort: 5000


Ipinapakita ng snippet ng code sa itaas kung paano i-deploy ang AI model, ngunit kailangan mo ring gawing external na accessible ang modelo. Kakailanganin mong ilantad ito sa pamamagitan ng pagtukoy ng Serbisyo ng Kubernetes. Ang service.yaml sa ibaba ay naglalarawan ng isang halimbawa:


 apiVersion: v1 kind: Service metadata: name: ml-model-service spec: selector: app: ml-model ports: - protocol: TCP port: 80 targetPort: 5000 type: LoadBalancer


Gamitin ang kubectl command-line tool para ilapat ang deployment at mga configuration ng serbisyo:


 # Deploy the application kubectl apply -f deployment.yaml # Expose the service kubectl apply -f service.yaml


Pag-scale Gamit ang Kubernetes

Nagbibigay ang Kubernetes ng mahusay na mga kakayahan sa pag-scale sa mga kapaligiran ng AI, na nag-maximize sa paggamit ng mapagkukunan at pagganap. Ginagawa ang pahalang na pag-scale sa pamamagitan ng pagdaragdag ng mga karagdagang container, at ang vertical scaling ay kinabibilangan ng pagdaragdag ng mga karagdagang mapagkukunan tulad ng CPU o memory sa isang container.

Pahalang na Pagsusukat

Ang pahalang na pag-scale ay ginagamit upang palakihin ang bilang ng mga replika (Pods) ng isang AI system upang mahawakan ang mas mataas na workload. Ang proseso ay nangangailangan ng pagpapagana ng dynamic na pag-scale depende sa bilang ng mga replika. Ang utos na ginamit upang paganahin ang naturang proseso ay `kubectl scale`. Ang partikular na utos ay ginagamit upang i-set up ang deployment upang gumana hanggang sa maximum na limang replika:


`kubectl scale --replicas=5 deployment/ml-model-deployment`


Pinapataas ng command ang ml-model-deployment para gumamit ng limang replika ng machine-learning model container. Ang system ay dynamic na nagbibigay ng mas maraming Pod upang matugunan ang kinakailangang numero pagkatapos.

Awtomatikong Pag-scale gamit ang Horizontal Pod Autoscaler (HPA)

Pinapadali ng Kubernetes ang auto-scaling gamit ang Horizontal Pod Autoscaler (HPA). Ang HPA ay dynamic na nag-aayos ng bilang ng mga replika batay sa paggamit ng mapagkukunan, ibig sabihin, CPU o memorya, na may kaugnayan sa mga nakatakdang limitasyon. Ang configuration ng YAML na ipinapakita sa ibaba ay isang nauugnay na halimbawa ng isang HPA na dynamic na sumusukat para sa ml-model-deployment bilang tugon sa paggamit ng CPU:


 apiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: name: ml-model-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: ml-model-deployment minReplicas: 2 maxReplicas: 10 targetCPUUtilizationPercentage: 50


Sa setup na ito, ginagamit ang scaleTargetRef upang tukuyin ang Deployment na i-scale, ibig sabihin, ml-model-deployment. Ang minimum na bilang ng replica ay itinakda gamit ang MinReplicas, habang ang maximum na bilang ng replica ay kinokontrol gamit ang maxReplicas. Bilang karagdagan, ang porsyento ng paggamit ng CPU ay itinakda gamit ang targetCPUUtilizationPercentage, ibig sabihin, sa 50%.


Ang paggamit ng CPU na higit sa 50% sa lahat ng Pod ay nagreresulta sa pag-scale ng replica count sa maximum na 10 awtomatikong. Sa sandaling bumaba ang paggamit ng CPU sa itinakdang porsyento, awtomatikong binabawasan ng Kubernetes ang bilang ng replika upang makapaglabas ng mga mapagkukunan.

Vertical Scaling

Ang pahalang na pag-scale ay pangunahin upang makayanan ang mas maraming trapiko, samantalang ang vertical na pag-scale ay nagbibigay ng mas maraming mapagkukunan (gaya ng CPU o memorya) sa mga umiiral nang container. Ang proseso ay upang palakihin o pababain ang mga kahilingan at limitasyon ng mapagkukunan sa Kubernetes Deployment. Upang palakihin ang CPU at mga limitasyon ng memorya ng ml-model-deployment, kakailanganing buksan ng isa ang deployment.yaml file:


 apiVersion: apps/v1 kind: Deployment metadata: name: ml-model-deployment spec: replicas: 3 selector: matchLabels: app: ml-model template: metadata: labels: app: ml-model spec: containers: - name: ml-model-container image: ml-model:latest ports: - containerPort: 5000 resources: requests: cpu: "1" memory: "2Gi" limits: cpu: "2" memory: "4Gi"


Sa na-update na configuration na ito:

  • tinutukoy ng mga kahilingan ang pinakamababang mapagkukunang kinakailangan para sa lalagyan.
  • ang mga limitasyon ay tumutukoy sa pinakamataas na mapagkukunang magagamit ng lalagyan.