დაშორებული კვანძები
nodes ინსტრუმენტი PRX აგენტებს განაწილებულ დეპლოიმენტში დაშორებულ PRX ინსტანციებთან ურთიერთობის საშუალებას აძლევს. კვანძი არის ცალკე PRX დემონი, რომელიც სხვა მანქანაზე მუშაობს -- შესაძლოა განსხვავებული ტექნიკის შესაძლებლობებით, ქსელურ წვდომით ან ინსტრუმენტების კონფიგურაციით -- და კონტროლერის ინსტანციასთანაა დაწყვილებული.
nodes ინსტრუმენტის მეშვეობით აგენტს შეუძლია ხელმისაწვდომი კვანძების აღმოჩენა, მათი ჯანმრთელობის შემოწმება, ამოცანების გადამისამართება სპეციალიზებული შესაძლებლობების მქონე კვანძებზე (მაგ., GPU წვდომა) და შედეგების მიღება. ეს სამუშაო დატვირთვის განაწილებას, გარემოს სპეციალიზაციასა და აგენტის ამოცანების გეოგრაფიულ განაწილებას უზრუნველყოფს.
nodes ინსტრუმენტი all_tools() რეესტრში რეგისტრირებულია და ყოველთვის ხელმისაწვდომია. ფაქტობრივი ფუნქციონალი კვანძის კონფიგურაციაზე და დაშორებული პარტნიორების დაწყვილებაზეა დამოკიდებული.
კონფიგურაცია
კონტროლერის რეჟიმი
კონტროლერი არის პირველადი PRX ინსტანცია, რომელიც კვანძებს შორის მუშაობას ორკესტრირებს:
[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 ინსტანცია, რომელიც კონტროლერისგან დელეგირებულ სამუშაოს იღებს:
[node]
mode = "node"
node_id = "gpu-host-01"
advertise_address = "192.168.1.101:3121"
controller = "192.168.1.100:3121"აღმოჩენის მეთოდები
| მეთოდი | აღწერა | გამოყენება |
|---|---|---|
static | პარტნიორების მისამართების ექსპლიციტური სია კონფიგურაციაში | ცნობილი, სტაბილური ინფრასტრუქტურა |
mdns | ავტომატური აღმოჩენა მულტიქასთ DNS-ით ლოკალურ ქსელში | დინამიური გარემოები, დეველოპმენტი |
# mDNS აღმოჩენა
[node.discovery]
method = "mdns"
service_name = "_prx._tcp.local."გამოყენება
ხელმისაწვდომი კვანძების სია
ყველა დაწყვილებული დაშორებული კვანძის აღმოჩენა და სიით ჩვენება მათი სტატუსით:
{
"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%კვანძის ჯანმრთელობის შემოწმება
კონკრეტული კვანძის ჯანმრთელობისა და შესაძლებლობების მოთხოვნა:
{
"name": "nodes",
"arguments": {
"action": "health",
"node_id": "gpu-host-01"
}
}ამოცანის კვანძზე გაგზავნა
ამოცანის კონკრეტულ დაშორებულ კვანძზე გადამისამართება შესრულებისთვის:
{
"name": "nodes",
"arguments": {
"action": "send",
"node_id": "gpu-host-01",
"task": "Run the ML inference pipeline on the uploaded dataset."
}
}კვანძის შედეგების მიღება
ადრე გაგზავნილი ამოცანის შედეგების მიღება:
{
"name": "nodes",
"arguments": {
"action": "result",
"task_id": "task_xyz789"
}
}პარამეტრები
| პარამეტრი | ტიპი | სავალდებულო | ნაგულისხმევი | აღწერა |
|---|---|---|---|---|
action | string | დიახ | -- | კვანძის მოქმედება: "list", "health", "send", "result", "capabilities" |
node_id | string | პირობითი | -- | სამიზნე კვანძის იდენტიფიკატორი (სავალდებულოა "health", "send" შემთხვევაში) |
task | string | პირობითი | -- | ამოცანის აღწერა (სავალდებულოა "send" შემთხვევაში) |
task_id | string | პირობითი | -- | ამოცანის იდენტიფიკატორი (სავალდებულოა "result" შემთხვევაში) |
აბრუნებს:
| ველი | ტიპი | აღწერა |
|---|---|---|
success | bool | true თუ ოპერაცია დასრულდა |
output | string | ოპერაციის შედეგი (კვანძების სია, ჯანმრთელობის სტატუსი, ამოცანის შედეგი და სხვ.) |
error | string? | შეცდომის შეტყობინება ოპერაციის წარუმატებლობის შემთხვევაში (კვანძი მიუწვდომელია, ამოცანა ვერ მოიძებნა და სხვ.) |
არქიტექტურა
PRX კვანძების სისტემა კონტროლერი-კვანძის ტოპოლოგიას იყენებს:
┌──────────────────┐ ┌──────────────────┐
│ კონტროლერი │ │ კვანძი A │
│ (პირველადი PRX)│◄──────► │ (gpu-host-01) │
│ │ mTLS │ GPU, CUDA │
│ აგენტის ციკლი │ │ ლოკალური │
│ ├── nodes │ │ ინსტრუმენტები │
│ └── delegate │ └──────────────────┘
│ │
│ │ ┌──────────────────┐
│ │◄──────► │ კვანძი B │
│ │ mTLS │ (staging-01) │
│ │ │ Docker, Net │
└──────────────────┘ └──────────────────┘კომუნიკაციის პროტოკოლი
კვანძები ურთიერთმოქმედებს TCP-ზე მორგებული პროტოკოლით ორმხრივი TLS (mTLS) ავთენტიფიკაციით:
- დაწყვილება: კვანძი კონტროლერთან გამოწვევა-პასუხის ხელის ჩამორთმევით ხდება დაწყვილებული (იხ. კვანძის დაწყვილება)
- ჰარტბიტი: დაწყვილებული კვანძები პერიოდულ ჰარტბიტებს აგზავნის ჯანმრთელობისა და შესაძლებლობების შესახებ
- ამოცანის გადაცემა: კონტროლერი ამოცანებს კვანძებზე სერიალიზებული კონტექსტით აგზავნის
- შედეგის დაბრუნება: კვანძები ამოცანის შედეგებს სტრუქტურირებული გამოსავალით აბრუნებს
შესაძლებლობების განცხადება
თითოეული კვანძი თავის შესაძლებლობებს აცხადებს, რომლებსაც კონტროლერი ინტელექტუალური ამოცანების მარშრუტიზაციისთვის იყენებს:
- ტექნიკა:
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 ინსტრუმენტი უსაფრთხოების პოლიტიკის ქვეშ მოქმედებს:
[security.tool_policy.tools]
nodes = "supervised" # დაშორებულ კვანძებზე ამოცანების გაგზავნამდე დამტკიცების მოთხოვნადაკავშირებული გვერდები
- დაშორებული კვანძები -- კვანძების სისტემის არქიტექტურა
- კვანძის დაწყვილება -- დაწყვილების პროტოკოლი და სერტიფიკატების გაცვლა
- კომუნიკაციის პროტოკოლი -- საკომუნიკაციო პროტოკოლის დეტალები
- უსაფრთხოების დაწყვილება -- მოწყობილობების დაწყვილების უსაფრთხოების მოდელი
- სესიები და აგენტები -- ალტერნატივა ლოკალური მულტი-აგენტის შესრულებისთვის
- ინსტრუმენტების მიმოხილვა -- ყველა ინსტრუმენტი და რეესტრის სისტემა