Skip to content
ეს გვერდი შეიქმნა და ითარგმნა ხელოვნური ინტელექტის დახმარებით. თუ შეამჩნევთ უზუსტობას, გთხოვთ, დაგვეხმარეთ გაუმჯობესებაში. GitHub-ზე რედაქტირება

დაშორებული კვანძები

nodes ინსტრუმენტი PRX აგენტებს განაწილებულ დეპლოიმენტში დაშორებულ PRX ინსტანციებთან ურთიერთობის საშუალებას აძლევს. კვანძი არის ცალკე PRX დემონი, რომელიც სხვა მანქანაზე მუშაობს -- შესაძლოა განსხვავებული ტექნიკის შესაძლებლობებით, ქსელურ წვდომით ან ინსტრუმენტების კონფიგურაციით -- და კონტროლერის ინსტანციასთანაა დაწყვილებული.

nodes ინსტრუმენტის მეშვეობით აგენტს შეუძლია ხელმისაწვდომი კვანძების აღმოჩენა, მათი ჯანმრთელობის შემოწმება, ამოცანების გადამისამართება სპეციალიზებული შესაძლებლობების მქონე კვანძებზე (მაგ., GPU წვდომა) და შედეგების მიღება. ეს სამუშაო დატვირთვის განაწილებას, გარემოს სპეციალიზაციასა და აგენტის ამოცანების გეოგრაფიულ განაწილებას უზრუნველყოფს.

nodes ინსტრუმენტი all_tools() რეესტრში რეგისტრირებულია და ყოველთვის ხელმისაწვდომია. ფაქტობრივი ფუნქციონალი კვანძის კონფიგურაციაზე და დაშორებული პარტნიორების დაწყვილებაზეა დამოკიდებული.

კონფიგურაცია

კონტროლერის რეჟიმი

კონტროლერი არის პირველადი PRX ინსტანცია, რომელიც კვანძებს შორის მუშაობას ორკესტრირებს:

toml
[node]
mode = "controller"
node_id = "primary"
advertise_address = "192.168.1.100:3121"

[node.discovery]
method = "static"          # "static" | "mdns"
peers = [
  "192.168.1.101:3121",   # GPU ჰოსტი
  "192.168.1.102:3121",   # Staging გარემო
]

კვანძის რეჟიმი

კვანძი არის PRX ინსტანცია, რომელიც კონტროლერისგან დელეგირებულ სამუშაოს იღებს:

toml
[node]
mode = "node"
node_id = "gpu-host-01"
advertise_address = "192.168.1.101:3121"
controller = "192.168.1.100:3121"

აღმოჩენის მეთოდები

მეთოდიაღწერაგამოყენება
staticპარტნიორების მისამართების ექსპლიციტური სია კონფიგურაციაშიცნობილი, სტაბილური ინფრასტრუქტურა
mdnsავტომატური აღმოჩენა მულტიქასთ DNS-ით ლოკალურ ქსელშიდინამიური გარემოები, დეველოპმენტი
toml
# mDNS აღმოჩენა
[node.discovery]
method = "mdns"
service_name = "_prx._tcp.local."

გამოყენება

ხელმისაწვდომი კვანძების სია

ყველა დაწყვილებული დაშორებული კვანძის აღმოჩენა და სიით ჩვენება მათი სტატუსით:

json
{
  "name": "nodes",
  "arguments": {
    "action": "list"
  }
}

პასუხის მაგალითი:

Nodes:
  1. gpu-host-01 (192.168.1.101:3121) - ONLINE
     Capabilities: gpu, cuda, python
     Load: 23%

  2. staging-01 (192.168.1.102:3121) - ONLINE
     Capabilities: docker, network-access
     Load: 5%

კვანძის ჯანმრთელობის შემოწმება

კონკრეტული კვანძის ჯანმრთელობისა და შესაძლებლობების მოთხოვნა:

json
{
  "name": "nodes",
  "arguments": {
    "action": "health",
    "node_id": "gpu-host-01"
  }
}

ამოცანის კვანძზე გაგზავნა

ამოცანის კონკრეტულ დაშორებულ კვანძზე გადამისამართება შესრულებისთვის:

json
{
  "name": "nodes",
  "arguments": {
    "action": "send",
    "node_id": "gpu-host-01",
    "task": "Run the ML inference pipeline on the uploaded dataset."
  }
}

კვანძის შედეგების მიღება

ადრე გაგზავნილი ამოცანის შედეგების მიღება:

json
{
  "name": "nodes",
  "arguments": {
    "action": "result",
    "task_id": "task_xyz789"
  }
}

პარამეტრები

პარამეტრიტიპისავალდებულონაგულისხმევიაღწერა
actionstringდიახ--კვანძის მოქმედება: "list", "health", "send", "result", "capabilities"
node_idstringპირობითი--სამიზნე კვანძის იდენტიფიკატორი (სავალდებულოა "health", "send" შემთხვევაში)
taskstringპირობითი--ამოცანის აღწერა (სავალდებულოა "send" შემთხვევაში)
task_idstringპირობითი--ამოცანის იდენტიფიკატორი (სავალდებულოა "result" შემთხვევაში)

აბრუნებს:

ველიტიპიაღწერა
successbooltrue თუ ოპერაცია დასრულდა
outputstringოპერაციის შედეგი (კვანძების სია, ჯანმრთელობის სტატუსი, ამოცანის შედეგი და სხვ.)
errorstring?შეცდომის შეტყობინება ოპერაციის წარუმატებლობის შემთხვევაში (კვანძი მიუწვდომელია, ამოცანა ვერ მოიძებნა და სხვ.)

არქიტექტურა

PRX კვანძების სისტემა კონტროლერი-კვანძის ტოპოლოგიას იყენებს:

┌──────────────────┐         ┌──────────────────┐
│   კონტროლერი     │         │   კვანძი A       │
│   (პირველადი PRX)│◄──────► │   (gpu-host-01)  │
│                  │  mTLS   │   GPU, CUDA      │
│   აგენტის ციკლი │         │   ლოკალური       │
│   ├── nodes      │         │   ინსტრუმენტები  │
│   └── delegate   │         └──────────────────┘
│                  │
│                  │         ┌──────────────────┐
│                  │◄──────► │   კვანძი B       │
│                  │  mTLS   │   (staging-01)   │
│                  │         │   Docker, Net    │
└──────────────────┘         └──────────────────┘

კომუნიკაციის პროტოკოლი

კვანძები ურთიერთმოქმედებს TCP-ზე მორგებული პროტოკოლით ორმხრივი TLS (mTLS) ავთენტიფიკაციით:

  1. დაწყვილება: კვანძი კონტროლერთან გამოწვევა-პასუხის ხელის ჩამორთმევით ხდება დაწყვილებული (იხ. კვანძის დაწყვილება)
  2. ჰარტბიტი: დაწყვილებული კვანძები პერიოდულ ჰარტბიტებს აგზავნის ჯანმრთელობისა და შესაძლებლობების შესახებ
  3. ამოცანის გადაცემა: კონტროლერი ამოცანებს კვანძებზე სერიალიზებული კონტექსტით აგზავნის
  4. შედეგის დაბრუნება: კვანძები ამოცანის შედეგებს სტრუქტურირებული გამოსავალით აბრუნებს

შესაძლებლობების განცხადება

თითოეული კვანძი თავის შესაძლებლობებს აცხადებს, რომლებსაც კონტროლერი ინტელექტუალური ამოცანების მარშრუტიზაციისთვის იყენებს:

  • ტექნიკა: gpu, cuda, tpu, high-memory
  • პროგრამული უზრუნველყოფა: docker, python, rust, nodejs
  • ქსელი: network-access, vpn-connected, internal-network
  • ინსტრუმენტები: კვანძზე ხელმისაწვდომი PRX ინსტრუმენტების სია

გავრცელებული შაბლონები

GPU-აჩქარებული ამოცანები

ML და გამოთვლითად ინტენსიური ამოცანების გადამისამართება GPU-აღჭურვილ კვანძებზე:

აგენტი: მომხმარებელს სურათების კლასიფიკაციის გაშვება სურს.
  1. [nodes] action="list" → პოულობს gpu-host-01-ს CUDA-ით
  2. [nodes] action="send", node_id="gpu-host-01", task="Run image classification on /data/images/"
  3. [ელოდება დასრულებას]
  4. [nodes] action="result", task_id="task_abc123"

გარემოს იზოლაცია

კვანძების გამოყენება კონკრეტულ გარემოებს მოითხოვს ამოცანებისთვის:

აგენტი: საჭიროა დეპლოიმენტის სკრიპტის ტესტირება staging გარემოში.
  1. [nodes] action="send", node_id="staging-01", task="Run deploy.sh and verify all services start"
  2. [nodes] action="result", task_id="task_def456"

დატვირთვის განაწილება

სამუშაოს მრავალ კვანძზე გავრცელება პარალელური შესრულებისთვის:

აგენტი: 3 მონაცემთა ნაკრების ერთდროულად დამუშავება.
  1. [nodes] action="send", node_id="node-a", task="Process dataset-1.csv"
  2. [nodes] action="send", node_id="node-b", task="Process dataset-2.csv"
  3. [nodes] action="send", node_id="node-c", task="Process dataset-3.csv"
  4. [სამივეს შედეგების შეგროვება]

უსაფრთხოება

ორმხრივი TLS ავთენტიფიკაცია

კვანძების ყველა კომუნიკაცია mTLS-ს იყენებს. TLS ხელის ჩამორთმევისას კონტროლერმაც და კვანძმაც მოქმედი სერტიფიკატები უნდა წარმოადგინოს. სერტიფიკატები დაწყვილების პროცესში იცვლება.

დაწყვილების მოთხოვნა

ამოცანების გაცვლამდე კვანძებმა დაწყვილების ხელის ჩამორთმევა უნდა დაასრულონ. დაუწყვილებელი კვანძები კავშირის დონეზე უარყოფილია. იხ. კვანძის დაწყვილება დაწყვილების პროტოკოლისთვის.

ამოცანის იზოლაცია

დაშორებულ კვანძებზე გაგზავნილი ამოცანები კვანძის უსაფრთხოების პოლიტიკის ფარგლებში სრულდება. კვანძის სენდბოქსის კონფიგურაცია, ინსტრუმენტების შეზღუდვები და რესურსების ლიმიტები კონტროლერის პარამეტრებისგან დამოუკიდებლად მოქმედებს.

ქსელის უსაფრთხოება

  • კვანძების კომუნიკაციის პორტები ფაიერვოლით უნდა იყოს შეზღუდული მხოლოდ ცნობილი კონტროლერის/კვანძის მისამართებისთვის
  • mDNS აღმოჩენა ლოკალური ქსელის სეგმენტით შემოიფარგლება
  • სტატიკური პარტნიორების სიები რეკომენდებულია პროდუქციული დეპლოიმენტებისთვის

პოლიტიკის ძრავი

nodes ინსტრუმენტი უსაფრთხოების პოლიტიკის ქვეშ მოქმედებს:

toml
[security.tool_policy.tools]
nodes = "supervised"       # დაშორებულ კვანძებზე ამოცანების გაგზავნამდე დამტკიცების მოთხოვნა

დაკავშირებული გვერდები

Released under the Apache-2.0 License.