Ծրագրային ճարտարապետության օպտիմիզացում AI-ի վրա հիմնված հավելվածների համար. | B4N1

Ծրագրային ճարտարապետության օպտիմիզացում AI-ի վրա հիմնված հավելվածների համար.

9 months ago · b4n1 Read time: 4 min

Ներածություն

Արհեստական ինտելեկտի (AI) տեխնոլոգիաների աճող ընդունումը հանգեցրել է բարդ ծրագրային հավելվածների զարգացմանը, որոնք պահանջում են բարձր մասշտաբայնություն և արդյունավետություն: Քանի որ AI-ի վրա հիմնված հավելվածները շարունակում են մեծ ժողովրդականություն վայելել, անհրաժեշտ է դառնում օպտիմալացնել դրանց ծրագրային ապահովման ճարտարապետությունը՝ ապահովելու անխափան կատարում և արդյունավետ ռեսուրսների օգտագործում: Այս հոդվածում մենք կուսումնասիրենք առաջադեմ ճարտարապետական ​​օրինաչափություններ և ռազմավարություններ՝ բարելավելու AI տեխնոլոգիաները օգտագործող հավելվածների կատարողականությունը և մասշտաբայնությունը:

Մարտահրավերներ AI-ի վրա հիմնված հավելվածներում

AI-ի վրա հիմնված հավելվածները եզակի մարտահրավերներ են ներկայացնում իրենց բարդ բնույթի պատճառով: Այս մարտահրավերները ներառում են.

  • Ծավալայնություն. AI մոդելները պահանջում են զգալի հաշվողական ռեսուրսներ, ինչը դժվարացնում է դրանք հորիզոնական կամ ուղղահայաց մասշտաբելը:
  • Տվյալների կառավարում. AI հավելվածները ստեղծում և մշակում են հսկայական քանակությամբ տվյալներ, որոնք կարող են հանգեցնել տվյալների կառավարման խնդիրների:
  • Մոդելի բարդություն. AI մոդելները հաճախ բարդ են և դժվար է պահպանել, ինչը դժվար է դարձնում դրանց թարմացումը կամ փոփոխումը:
  • Իրական ժամանակում մշակում. AI հավելվածները հաճախ պահանջում են իրական ժամանակի մշակում, ինչը կարող է դժվար լինել հասնել ավանդական ծրագրային ճարտարապետությունների հետ:

Ճարտարապետական օրինաչափություններ մասշտաբայնության և կատարողականության համար

Վերը նշված մարտահրավերները լուծելու համար կարող են օգտագործվել մի քանի ճարտարապետական օրինաչափություններ՝ AI-ի վրա հիմնված հավելվածների մասշտաբայնությունն ու կատարումը բարձրացնելու համար: Այս օրինաչափություններից մի քանիսը ներառում են.

1. Microservices Architecture

Microservices ճարտարապետությունը դիզայնի օրինաչափություն է, որը կառուցում է հավելվածը որպես փոքր, անկախ ծառայությունների հավաքածու: Յուրաքանչյուր ծառայություն պատասխանատու է որոշակի բիզնես հնարավորությունների համար և կարող է մշակվել, փորձարկվել և գործարկվել ինքնուրույն:

«Պիթոն».

Միկրոծառայությունների ճարտարապետության օրինակ Python-ում

fastapi ներմուծման FastAPI-ից

հավելված = FastAPI ()

@app.get ("/") def read_root(): վերադարձ {"message": "Hello World"}

@app.get ("/items/{item_id}") def read_item (item_id: int): վերադարձնել {"item_id": item_id}


### 2. Իրադարձությունների վրա հիմնված ճարտարապետություն

Իրադարձությունների վրա հիմնված ճարտարապետությունը դիզայնի օրինաչափություն է, որը կառուցում է հավելվածը իրադարձությունների շուրջ: Յուրաքանչյուր իրադարձություն առաջացնում է կոնկրետ պատասխան կամ գործողություն՝ թույլ տալով հավելվածին արձագանքել փոփոխություններին իրական ժամանակում:

`` ժանգ
// Իրադարձությունների վրա հիմնված ճարտարապետության օրինակ Rust-ում
օգտագործել actix_web::{web, App, HttpServer};
օգտագործել serde::{Deserialize, Serialize};

|
struct Իրադարձություն {
    տվյալներ՝ տող,
}

#[actix_web::main]
async fn main() -> std::io::Արդյունք<()> {
    HttpServer::new(|| {
        Հավելված::նոր()
            .route("/events", web::post().to(handle_event))
    })
    .bind("127.0.0.1:8080"):
    .run()
    .սպասել
}

async fn handle_event (իրադարձություն՝ web::Json<Իրադարձություն>) -> String {
    // Կառավարել իրադարձությունը
    ձևաչափ! («Ստացված իրադարձություն. {}», event.data)
}

3. Ծառայություններին ուղղված ճարտարապետություն

Ծառայության վրա հիմնված ճարտարապետությունը դիզայնի օրինաչափություն է, որը կառուցում է հավելվածը ծառայությունների շուրջ: Յուրաքանչյուր ծառայություն ապահովում է որոշակի բիզնես հնարավորություն և կարող է սպառվել այլ ծառայությունների կամ հավելվածների կողմից:

``գնացեք // Go-ում սպասարկման վրա հիմնված ճարտարապետության օրինակ փաթեթի հիմնական

ներմուծում ( «կոդավորում/json» «մատյան» «ցանց/http» )

մուտքագրեք Ծառայության կառուցվածքը{}

func (s *Service) HandleRequest(w http.ResponseWriter, r *http.Request) { // Կարգավորել հարցումը json.NewEncoder(w).Encode(«Բարև աշխարհ») }

func main() { http.HandleFunc("/services", s.HandleRequest) log.Fatal(http.ListenAndServe(":8080", զրոյ)) }


## Ստանդարտության և կատարողականության ռազմավարություններ

Ի հավելումն ճարտարապետական օրինաչափությունների, մի քանի ռազմավարություններ կարող են կիրառվել AI-ի վրա հիմնված հավելվածների մասշտաբայնությունն ու կատարումը բարձրացնելու համար: Այս ռազմավարություններից մի քանիսը ներառում են.

### 1. Բաշխված հաշվարկ

Բաշխված հաշվարկը ներառում է բարդ առաջադրանքների բաժանումը փոքր ենթաառաջադրանքների, որոնք կարող են միաժամանակ իրականացվել բազմաթիվ մեքենաների վրա: Այս մոտեցումը կարող է զգալիորեն բարելավել AI հավելվածների մասշտաբայնությունը և կատարողականությունը:

### 2. Cloud Computing

Cloud computing-ը ներառում է ամպի վրա հիմնված ենթակառուցվածքի օգտագործում՝ AI հավելվածները հորիզոնական կամ ուղղահայաց մասշտաբավորելու համար: Ամպային պրովայդերները, ինչպիսիք են AWS-ը, Azure-ը և Google Cloud-ը, առաջարկում են մի շարք ծառայություններ և գործիքներ՝ աջակցելու AI-ի զարգացմանն ու տեղակայմանը:

### 3. Կոնտեյներացում

Կոնտեյներացումը ներառում է հավելվածի և դրա կախվածությունների փաթեթավորումը մեկ կոնտեյների մեջ, որը կարող է իրականացվել ցանկացած մեքենայի վրա՝ համատեղելի գործարկման միջավայրով: Կոնտեյներացումը կարող է բարելավել արհեստական ​​ինտելեկտի հավելվածների շարժունակությունն ու մասշտաբայնությունը:

## Վիզուալիզացիա

AI-ի վրա հիմնված հավելվածների մասշտաբայնությունը և կատարումը պատկերացնելու համար կարող են օգտագործվել մի քանի չափումներ: Այս չափորոշիչներից մի քանիսը ներառում են.

* **Արդյունք**. հարցումների կամ առաջադրանքների քանակը, որոնք մշակվել են մեկ միավորի համար:
* **Հապաղում**. հարցումը կամ առաջադրանքը մշակելու համար պահանջվող ժամանակը:
* **Հիշողության օգտագործում**. հավելվածի կողմից օգտագործվող հիշողության ծավալը:
* **CPU-ի օգտագործում**. հավելվածի կողմից օգտագործվող պրոցեսորի ռեսուրսների քանակը:

Ահա Chart.js կոնֆիգուրացիայի օրինակ, որը պատկերացնում է AI հավելվածի թողունակությունը և ուշացումը.
```ջսոն
{
  «տեսակ»: «գիծ»,
  "տվյալներ": {
    «պիտակներ»՝ [«Ջան», «Փետրվար», «Մար», «Ապր», «Մայիս»],
    «տվյալների հավաքածուներ»:
      {
        «պիտակ»: «Առաջատարություն»,
        «տվյալներ»: [100, 120, 150, 180, 200],
        "borderColor": "rgba(255, 99, 132, 1)",
        «սահմանի լայնություն»՝ 1,
        «pointRadius»՝ 0
      },
      {
        "label": "Latency",
        «տվյալներ»: [50, 40, 30, 20, 10],
        "borderColor": "rgba(54, 162, 235, 1)",
        «սահմանի լայնություն»՝ 1,
        «pointRadius»՝ 0
      }
    ]
  },
  «Ընտրանքներ»: {
    «վերնագիր»: {
      «ցուցադրում»՝ ճշմարիտ,
      "text": "AI Application Performance"
    },
    «կշեռքներ»: {
      «yAxes»:
        {
          «ցուցադրում»՝ ճշմարիտ,
          "scaleLabel": {
            «ցուցադրում»՝ ճշմարիտ,
            "labelString": "Արժեք"
          }
        }
      ]
    }
  }
}

Այս կոնֆիգուրացիան ստեղծում է գծային գծապատկեր երկու տվյալների հավաքածուով՝ թողունակություն և ուշացում: Գծապատկերը ցույց է տալիս յուրաքանչյուր տվյալների հավաքածուի արժեքները հինգ ամսվա ընթացքում:

Եզրակացություն

AI-ի վրա հիմնված հավելվածների ծրագրային ճարտարապետության օպտիմիզացումը շատ կարևոր է անխափան կատարումն ու ռեսուրսների արդյունավետ օգտագործումն ապահովելու համար: Օգտագործելով առաջադեմ ճարտարապետական ​​օրինաչափություններ և ռազմավարություններ՝ ծրագրավորողները կարող են բարելավել AI հավելվածների մասշտաբայնությունն ու կատարողականությունը: Այս հոդվածում մենք ուսումնասիրեցինք մի քանի ճարտարապետական ​​օրինաչափություններ և ռազմավարություններ, ներառյալ միկրոծառայությունների ճարտարապետությունը, իրադարձությունների վրա հիմնված ճարտարապետությունը և ծառայության վրա հիմնված ճարտարապետությունը: Մենք նաև քննարկել ենք մասշտաբայնության և կատարողականության մի քանի ռազմավարություններ, ներառյալ բաշխված հաշվարկը, ամպային հաշվարկը և կոնտեյներացումը: Վերջապես, մենք պատկերացրինք AI հավելվածների մասշտաբայնությունն ու կատարումը՝ օգտագործելով Chart.js:

Հղումներ

  • [1] Մարտին Ֆաուլերի «Microservices Architecture»:
  • [2] «Իրադարձությունների վրա հիմնված ճարտարապետություն» Քրիս Ռիչարդսոնի կողմից
  • [3] «Ծառայություններին ուղղված ճարտարապետություն» Թոմաս Էրլ
  • [4] Յան Ֆոսթերի «Բաշխված հաշվողականություն»:
  • [5] «Cloud Computing» Փիթեր Մելի կողմից
  • [6] Լենարտ Պոյտերինգի «Կոնտեյներիզացիա».

Ապագա աշխատանք

AI-ի վրա հիմնված հավելվածների համար ծրագրային ապահովման ճարտարապետության օպտիմալացման հետագա աշխատանքը ներառում է.

  • Նոր ճարտարապետական նախշերի մշակում. նոր ճարտարապետական նախշերի մշակում, որոնք բավարարում են AI հավելվածների հատուկ կարիքները:
  • Ընդարձակելիության և կատարողականի բարելավում. AI հավելվածների մասշտաբայնության և կատարողականի բարելավում` օգտագործելով առաջադեմ տեխնոլոգիաներ, ինչպիսիք են բաշխված հաշվողականությունը և ամպային հաշվարկը:
  • Արհեստական ​​ինտելեկտի հավելվածների կատարողականի վիզուալացում. Վիզուալիզացիայի նոր գործիքների և տեխնիկայի մշակում` AI հավելվածների աշխատանքը պատկերացնելու համար:

Երախտագիտություն

Այս աշխատանքին աջակցել է [Name of Organization or Sponsor]: Հեղինակները ցանկանում են շնորհակալություն հայտնել [Անձի կամ թիմի անունը] արժեքավոր արձագանքների և առաջարկությունների համար:


Have Questions?

Let's Talk

Contact me on LinkedIn