გასული რამდენიმე წელი განსაკუთრებული იყო ცენტრალიზებული სერვერზე დაფუძნებული AI მოდელებისთვის, როგორიცაა ChatGPT, Google's Gemini, Microsoft's Copilot და ა.შ. ეჭვგარეშეა, რომ ასეთმა AI მოდელებმა შეცვალეს მრავალი ასპექტი. მაგრამ მეორეს მხრივ, მათ აქვთ გარკვეული უარყოფითი მხარეები. ალბათ, თქვენც გსმენიათ ChatGPT-ის რამდენიმე გათიშვის შესახებ.
სერვერზე დაფუძნებულ ცენტრალიზებულ მოდელებს ერთი მარცხის დიდი რისკი ემუქრებათ. მაგრამ ახლა დრო შეიცვალა. ბლოკჩეინის ტექნოლოგია ასევე ახდენს რევოლუციას ბევრ სფეროში, მათ შორის ხელოვნურ ინტელექტს (AI).
ინტერნეტ კომპიუტერული პროტოკოლი (ICP), რომელიც Dfinity-მ შეიმუშავა, მუშაობს ხელოვნური ინტელექტის დეცენტრალიზაციაზე, რაც საშუალებას აძლევს AI აპლიკაციებს იმუშაონ სრულად დეცენტრალიზებულ ღრუბლოვან ინფრასტრუქტურაზე. უნიკალური ის არის, რომ ICP საშუალებას აძლევს AI მოდელები და სერვისები განლაგდეს დამოუკიდებელი მონაცემთა ცენტრების ქსელში. დეცენტრალიზაციის ასეთი მიდგომა უზრუნველყოფს, რომ ხელოვნური ინტელექტის ოპერაციები იყოს გამჭვირვალე, ცენზურის მიმართ მდგრადი და ნაკლებად მიდრეკილი წარუმატებლობის ცალკეული წერტილებისკენ.
ეს სტატია ეწინააღმდეგება პრაქტიკული ტესტის სახის ამოცნობის DApp-ს, რომელიც დაფუძნებულია ICP-ზე. ჩვენ შევამოწმებთ, თუ როგორ მუშაობს ხელოვნური ინტელექტის დეცენტრალიზაცია ობიექტურად, თითოეული ნაბიჯის დახვეწილი დემონსტრირებით. ჩვენ შევეცადეთ რთული ტექნიკური ცნებები დავყოთ ადვილად გასაგებ გაკვეთილებად, ასე რომ, დავიწყოთ.
პროექტის შემუშავებისა და ტესტირების მთელი პროცესი განხორციელდა Windows-ზე დაფუძნებულ აპარატზე, ამიტომ ჩვენ ვქმნით Linux ქვესისტემას, რადგან ბევრი ICP განვითარების ინსტრუმენტი და სკრიპტი ოპტიმიზებულია Linux-ზე დაფუძნებული გარემოსთვის.
📥 წინაპირობები:
ოპერაციული სისტემა : Windows დაინსტალირებული Windows ქვესისტემა Linux-ისთვის (WSL). გთხოვთ, ინსტალაციისთვის მიმართოთ ამ სახელმძღვანელოს .
ცოდნა :
JavaScript-ის , React.js-ის , Rust-ის და WebAssembly- ის ძირითადი გაგება.
ვებ განვითარების კონცეფციების გაცნობა.
ინსტრუმენტები :
📥 შექმენით განვითარების გარემო:
sh -ci "$(curl -fsSL https://smartcontracts.org/install.sh)"
👉ინსტალაციის დასადასტურებლად:
dfx –version
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source $HOME/.cargo/env
👉ინსტალაციის შესამოწმებლად, გაუშვით:
rustc –version
3. დააინსტალირეთ Node.js შემდეგი ბრძანების გაშვებით:
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - sudo apt install -y nodejs
👉ინსტალაციის შესამოწმებლად, გაუშვით:
node -v npm -v
git clone https://github.com/wasm-forge/wasi2ic.git cd wasi2ic cargo install --path .
👉ინსტალაციის შესამოწმებლად, გაუშვით:
echo $PATH wasi2ic –help
cargo install wasm-opt
📥პროექტის კლონირება:
ჩვენ ვიყენებთ პროექტის GitHub საცავს ჩვენი ტესტირების მიზნებისთვის. თქვენ შეგიძლიათ შეამოწმოთ მათი საცავი აქ .
1. კლონირეთ საცავი და გადადით სახის ამოცნობის პროექტზე:
git clone https://github.com/dfinity/examples.git cd examples/rust/face-recognition
შენიშვნა: თქვენი Linux ქვესისტემის ფაილებზე წვდომა შეგიძლიათ File Explorer-ში \\wsl$
ან Windows OS-ში პირდაპირი ძიების ფუნქციის მოძიებით.
📥 ჩამოტვირთეთ მოდელები სახის ამოცნობისთვის
სახის ამოცნობის მოდელი გამოყენებული იქნება სურათზე სახეების გამოსავლენად. გაშვება:
./download-face-detection-model.sh
თქვენ გჭირდებათ მოდელის ექსპორტი ONNX ფორმატში PyTorch
და facenet-pytorch
გამოყენებით. დაიწყეთ ამ პითონის ბიბლიოთეკების ინსტალაციით:
pip install torch facenet-pytorch onnx
შენიშვნა: თუ Python არ არის უკვე დაინსტალირებული თქვენს ქვესისტემაში, სცადეთ დააინსტალიროთ Python და pip აქედან: https://packaging.python.org/en/latest/tutorials/installing-packages/ .
Python ფაილში ან გარსში გაუშვით შემდეგი: ჩაწერეთ python3 ტერმინალში და შემდეგ გაუშვით შემდეგი კოდი. შესრულების შემდეგ ჩაწერეთ exit().
import torch import facenet_pytorch resnet = facenet_pytorch.InceptionResnetV1(pretrained='vggface2').eval() input = torch.randn(1, 3, 160, 160) torch.onnx.export(resnet, input, "face-recognition.onnx", verbose=False, opset_version=11)
ეს შექმნის face-recognition.onnx
ფაილს. დააკოპირეთ იგი თქვენი საცავის ძირში.
📥 აშენება
ახლა დროა ავაშენოთ პროექტი. გაშვება:
dfx start --background dfx deploy
თუ ყველაფერი სწორად მიდის, შეგიძლიათ ნახოთ Frontend URL ტერმინალში.
შენიშვნა: თუ რაიმე შეცდომის წინაშე აღმოჩნდებით კლიენტის გამოტოვების გამო, შეეცადეთ დააინსტალიროთ webpack
და webpack-cli
გლობალურად npm-ის გამოყენებით:
sudo npm install -g webpack webpack-cli
და ადგილობრივი დამოკიდებულებები:
npm install
📥 შექმენით კონტეინერი, გაუშვით:
dfx canister create backend
ტერმინალში შეგიძლიათ იხილოთ შემდეგი შეტყობინება.
👉ახლა შეგიძლიათ შეამოწმოთ კასრის უკანა ნაწილის სტატუსი:
dfx canister status backend
თქვენ შეგიძლიათ ნახოთ მსგავსი რამ ტერმინალში.
📥 მოდელების ატვირთვა
ვინაიდან AI მოდელები, როგორც წესი, დიდია. ისინი არ შეიძლება იყოს ჩასმული პირდაპირ სმარტ კონტრაქტის WebAssembly (Wasm) ბინარში. ამის ნაცვლად, ეს მოდელები ცალკე უნდა აიტვირთოს. ამის მოსაგვარებლად, DecideAI-მ შეიმუშავა ინსტრუმენტი მოდელების თანდათანობით ატვირთვისთვის. თქვენ შეგიძლიათ იპოვოთ ინსტრუმენტი აქ: ic-file-uploader .
👉 ინსტრუმენტის დასაყენებლად გამოიყენეთ შემდეგი ბრძანება:
cargo install ic-file-uploader
ინსტალაციის შემდეგ, შეგიძლიათ გამოიყენოთ upload-models-to-canister.sh
სკრიპტი ტერმინალში გაშვებით ./upload-models-to-canister.sh
მოდელების ასატვირთად. ეს სკრიპტი ასრულებს შემდეგ ნაბიჯებს:
dfx canister call backend clear_face_detection_model_bytes dfx canister call backend clear_face_recognition_model_bytes
ic-file-uploader backend append_face_detection_model_bytes version-RFB-320.onnx ic-file-uploader backend append_face_recognition_model_bytes face-recognition.onnx
dfx canister call backend setup_models
ახლა თქვენ შეგიძლიათ დაუკავშირდეთ Frontend-ს ტერმინალში მიღებული URL-ის გამოყენებით, სანამ dfx deploy
ბრძანება (სურათი 1)
მას შემდეგ რაც ატვირთავთ სურათს ICP-ის ლოგოზე დაწკაპუნებით, შეეცადეთ დაამატოთ ადამიანის სახელი ღილაკზე „ ადამიანის დამატება “ დაწკაპუნებით მოდელის მოსამზადებლად.
ის ამოიცნობს სახეს ავტომატური ოთხკუთხედის ნიშნით სახეზე. სახელის დაყენების შემდეგ, ის აჩვენებს შეტყობინებას წარმატებული დამატების შესახებ, როგორიცაა:
ხელოვნური ინტელექტი იმახსოვრებს თქვენს მიერ დასახელებულ სახელს, რათა შეამოწმოთ, ამოიცნობს თუ არა ერთი და იმავე ადამიანის სხვადასხვა ფოტოების სახეებს. აქ ნიკოლა ტესლას სხვადასხვა ფოტოებია გადაღებული. სახის ამოცნობისთვის სხვა ფოტოს ასატვირთად, გადატვირთეთ გვერდი და შემდეგ დააწკაპუნეთ ოფციაზე „ გაცნობა “. ვნახოთ; მან წარმატებით ამოიცნო ნიკოლა ტესლას სახე საწყისიდან მცირედი განსხვავებით.
აი, ნიკოლა ტესლას ხელოვნური ინტელექტის მიერ გენერირებული ფოტო გადაეცემა მოდელს და გასაკვირია, რომ მან ზუსტად ამოიცნო სახე, ვნახოთ აქ:
მან წარმატებით დაადასტურა, რომ ICP Face Recognizing DApp მუშაობს იდეალურად, რადგან მან წარმატებით აღმოაჩინა ნიკოლა ტესლას სახეები. შეგიძლიათ თავად სცადოთ.
ვინაიდან ის სატესტო მიზნებისთვისაა, ინტერფეისი და ფუნქციები შეზღუდულია. თქვენ შეგიძლიათ დაამატოთ დამატებითი ფუნქციები და სერვისები, თუ თქვენ ჩქარობთ აწარმოოთ მზა dApp ICP-ზე სახის ამოცნობის მიზნით. შეგიძლიათ სცადოთ შემდეგი ფუნქციები კოდის მაგალითებით. გთხოვთ გაითვალისწინოთ, რომ თქვენ უნდა დაამატოთ ან დააკონფიგურიროთ კოდები თქვენი მოთხოვნების შესაბამისად.
📥 აქ არის რამოდენიმე რჩევა თქვენთვის:
თუ ამ ფუნქციას დაამატებთ ამ dApp-ს, მხოლოდ დარეგისტრირებულ მომხმარებლებს შეუძლიათ წვდომა DApp-ზე. აი, როგორ შეგიძლიათ დაამატოთ ავთენტიფიკაცია ინტერნეტის იდენტიფიკაციის გამოყენებით. თქვენ შეგიძლიათ დააკავშიროთ Internet Identity მთავარ გვერდზე Internet Identity შესვლის ღილაკის დამატებით. მომხმარებლის შესვლის შემდეგ, აჩვენეთ პერსონალიზებული დაფა.
როგორ დავამატოთ:
👉 დააინსტალირეთ Internet Identity Dependencies:
npm install @dfinity/agent @dfinity/auth-client
👉 დაამატეთ შემდეგი კოდი თქვენს ფრონტენტში, რათა ჩართოთ ავტორიზაცია:
import { AuthClient } from "@dfinity/auth-client"; async function init() { const authClient = await AuthClient.create(); if (await authClient.isAuthenticated()) { // Display dashboard or personalized content } else { authClient.login({ identityProvider: "https://identity.ic0.app/#authorize", onSuccess: () => { // Once authenticated, display personalized features }, }); } } init();
👉შესვლის შემდეგ მომხმარებელს შეუძლია იხილოს აღიარებული სახეების ისტორია ან სხვა პერსონალიზებული მონაცემები.
გახადეთ სურათის ატვირთვის ფუნქცია და გამოცდილება უფრო გლუვი, რაც საშუალებას მისცემს მომხმარებლებს გადაათრიონ და ჩამოაგდონ სურათები სახის ამოცნობისთვის.
როგორ დავამატოთ :
👉გამოიყენეთ HTML5-ის გადაათრიეთ და ჩამოაგდეთ ფუნქცია:
<div id="drop-area"> <p>Drag and drop an image here or click to select</p> <input type="file" id="file-input" hidden /> </div>
👉დაამატეთ JavaScript გადაადგილების მოქმედების დასამუშავებლად:
const dropArea = document.getElementById("drop-area"); dropArea.addEventListener("dragover", (event) => { event.preventDefault(); }); dropArea.addEventListener("drop", (event) => { event.preventDefault(); const files = event.dataTransfer.files; // Process the uploaded image });
👉დარწმუნდით, რომ ის შეუფერხებლად აერთიანებს თქვენს არსებულ სახის ამოცნობის ფუნქციას.
საინტერესო ფუნქცია იქნება პროგრესის ზოლის ჩვენება სურათის ატვირთვისას, რათა აცნობოს მომხმარებლებს, რომ სისტემა ამუშავებს სურათს.
როგორ დავამატოთ:
👉 გამოიყენეთ მარტივი HTML პროგრესის ზოლი:
<div id="progress-bar"> <div id="progress-fill" style="width: 0%;"></div> </div>
👉 დინამიურად განაახლეთ პროგრესის ზოლი სურათის დამუშავებისას:
const progressFill = document.getElementById("progress-fill"); let progress = 0; const interval = setInterval(() => { progress += 10; progressFill.style.width = `${progress}%`; if (progress === 100) { clearInterval(interval); } }, 100); // Simulate progress every 100ms
თქვენ შეგიძლიათ დაამატოთ ფუნქცია რეალურ დროში შეტყობინებების მიწოდებისთვის, როგორც კი სახის ამოცნობა დასრულდება, მოდალური ან სადღეგრძელო შეტყობინების საშუალებით.
როგორ დავამატოთ :
👉შეგიძლიათ გამოიყენოთ მსუბუქი ბიბლიოთეკა, როგორიცაა Toastr ან მორგებული სადღეგრძელო შეტყობინებები.
<div id="notification" class="hidden">Face Recognition Complete!</div>
👉თქვენს JavaScript-ში აჩვენეთ შეტყობინება, როდესაც backend დააბრუნებს შედეგს:
function showNotification(message) { const notification = document.getElementById("notification"); notification.innerHTML = message; notification.classList.remove("hidden"); setTimeout(() => { notification.classList.add("hidden"); }, 3000); // Hide notification after 3 seconds } // Call this after face recognition is done showNotification("Face detected and recognized!");
📥 საბოლოო ნაბიჯები: ხელახლა აშენება და დანერგვა
ამ ახალი ფუნქციების დანერგვის შემდეგ:
👉პროექტის აღდგენა:
dfx build
👉განლაგება ტესტირების ქსელში: ჯერ უნდა გატესტო, სანამ მაგისტრალზე მიდიხარ.
dfx deploy --network ic
ეს არის რამდენიმე მაგალითი და იდეა სადემონსტრაციო მიზნებისთვის. თქვენ შეგიძლიათ შეამოწმოთ ისინი დამოუკიდებლად და შეგვატყობინოთ თქვენი პროგრესი კომენტარების განყოფილებაში. ასევე, თქვენ შეგიძლიათ მეტი გააკეთოთ მასთან ICP-ზე AI-ს დეცენტრალიზაციისთვის.
ჩვენ წარმატებით გამოვცადეთ Face Recognizing DApp ICP-ზე, რომელიც წარმოადგენს AI (DeAI) დეცენტრალიზაციის რეალურ მცდელობას. ჩვენი ტესტირების მიხედვით, DApp-ის პასუხები სწრაფი იყო და სახეების გამოვლენა ზუსტი. ICP-ის უნიკალურ ინფრასტრუქტურას შეუძლია დაგვეხმაროს ისეთი რთული ამოცანების შესრულებაში, როგორიცაა სახის ამოცნობა ცენტრალიზებულ სისტემებზე დამოკიდებულების გარეშე.
ის არა მხოლოდ აძლიერებს უსაფრთხოებას და კონფიდენციალურობას, არამედ აჩვენებს დეცენტრალიზებული AI (DeAI) აპლიკაციების სწრაფად განვითარებას. რამდენადაც ICP აგრძელებს განვითარებას, დიდი მოდელების განლაგებისა და AI-ის დასკვნის განხორციელების შესაძლებლობას შეუძლია გახსნას ახალი შესაძლებლობები ინოვაციისთვის. ჩვენ შეგვიძლია ველით, რომ დეცენტრალიზებული AI იქნება მთავარი მოთამაშე სანდო და მასშტაბური გადაწყვეტილებების მომავალში. დეველოპერებს ასევე აქვთ ახალი შესაძლებლობები, შექმნან მეტი პროდუქტი და სერვისი ICP-ზე.