# Раздел 3: Практическо ръководство за внедряване ## Общ преглед Това изчерпателно ръководство ще ви помогне да се подготвите за курса EdgeAI, който се фокусира върху изграждането на практични AI решения, работещи ефективно на крайни устройства. Курсът акцентира върху практическото разработване с помощта на съвременни рамки и най-новите модели, оптимизирани за крайно внедряване. ## 1. Настройка на средата за разработка ### Езици за програмиране и рамки **Python среда** - **Версия**: Python 3.10 или по-нова (препоръчително: Python 3.11) - **Мениджър на пакети**: pip или conda - **Виртуална среда**: Използвайте venv или conda за изолация - **Основни библиотеки**: Ще инсталираме специфични EdgeAI библиотеки по време на курса **Microsoft .NET среда** - **Версия**: .NET 8 или по-нова - **IDE**: Visual Studio 2022, Visual Studio Code или JetBrains Rider - **SDK**: Уверете се, че .NET SDK е инсталиран за разработка на различни платформи ### Инструменти за разработка **Редактори на код и IDE** - Visual Studio Code (препоръчва се за разработка на различни платформи) - PyCharm или Visual Studio (за специфична разработка на езици) - Jupyter Notebooks за интерактивна разработка и прототипиране **Контрол на версиите** - Git (последна версия) - GitHub акаунт за достъп до хранилища и сътрудничество ## 2. Хардуерни изисквания и препоръки ### Минимални системни изисквания - **CPU**: Многоядрен процесор (Intel i5/AMD Ryzen 5 или еквивалент) - **RAM**: Минимум 8GB, препоръчително 16GB - **Съхранение**: 50GB свободно пространство за модели и инструменти за разработка - **OS**: Windows 10/11, macOS 10.15+ или Linux (Ubuntu 20.04+) ### Стратегия за изчислителни ресурси Курсът е проектиран да бъде достъпен за различни хардуерни конфигурации: **Локална разработка (фокус върху CPU/NPU)** - Основната разработка ще използва CPU и NPU ускорение - Подходящо за повечето съвременни лаптопи и настолни компютри - Фокус върху ефективност и практични сценарии за внедряване **Облачни GPU ресурси (по избор)** - **Azure Machine Learning**: За интензивно обучение и експериментиране - **Google Colab**: Безплатен план, достъпен за образователни цели - **Kaggle Notebooks**: Алтернативна платформа за облачно изчисление ### Съображения за крайни устройства - Познания за ARM-базирани процесори - Разбиране на ограниченията на мобилния и IoT хардуера - Запознаване с оптимизацията на консумацията на енергия ## 3. Основни семейства модели и ресурси ### Основни семейства модели **Microsoft Phi-4 Family** - **Описание**: Компактни, ефективни модели, проектирани за крайно внедряване - **Силни страни**: Отлично съотношение между производителност и размер, оптимизирани за задачи с разсъждения - **Ресурс**: [Phi-4 Collection на Hugging Face](https://huggingface.co/collections/microsoft/phi-4-677e9380e514feb5577a40e4) - **Приложения**: Генериране на код, математически разсъждения, общи разговори **Qwen-3 Family** - **Описание**: Най-новото поколение мултиезични модели на Alibaba - **Силни страни**: Силни мултиезични възможности, ефективна архитектура - **Ресурс**: [Qwen-3 Collection на Hugging Face](https://huggingface.co/collections/Qwen/qwen3-67dd247413f0e2e4f653967f) - **Приложения**: Мултиезични приложения, AI решения за различни култури **Google Gemma-3n Family** - **Описание**: Леките модели на Google, оптимизирани за крайно внедряване - **Силни страни**: Бързо извеждане, архитектура, подходяща за мобилни устройства - **Ресурс**: [Gemma-3n Collection на Hugging Face](https://huggingface.co/collections/google/gemma-3n-685065323f5984ef315c93f4) - **Приложения**: Мобилни приложения, обработка в реално време ### Критерии за избор на модел - **Търговия между производителност и размер**: Разбиране кога да се изберат по-малки или по-големи модели - **Оптимизация за специфични задачи**: Съответствие на моделите с конкретни приложения - **Ограничения за внедряване**: Памет, латентност и съображения за консумация на енергия ## 4. Инструменти за квантизация и оптимизация ### Llama.cpp Framework - **Хранилище**: [Llama.cpp на GitHub](https://github.com/ggml-org/llama.cpp) - **Цел**: Високопроизводителен двигател за извеждане за LLMs - **Основни характеристики**: - Оптимизирано извеждане за CPU - Множество формати за квантизация (Q4, Q5, Q8) - Съвместимост с различни платформи - Ефективно използване на паметта - **Инсталация и основна употреба**: ```bash # Clone the repository git clone https://github.com/ggml-org/llama.cpp.git cd llama.cpp # Build the project with optimizations mkdir build && cd build cmake .. -DCMAKE_BUILD_TYPE=Release cmake --build . --config Release # Quantize a model (from GGUF format to 4-bit quantization) ./quantize ../models/original-model.gguf ../models/quantized-model-q4_0.gguf q4_0 # Run inference with the quantized model ./main -m ../models/quantized-model-q4_0.gguf -n 512 -p "Write a function to calculate fibonacci numbers in Python:" ``` ### Microsoft Olive - **Хранилище**: [Microsoft Olive на GitHub](https://github.com/microsoft/olive) - **Цел**: Инструмент за оптимизация на модели за крайно внедряване - **Основни характеристики**: - Автоматизирани работни потоци за оптимизация на модели - Оптимизация, съобразена с хардуера - Интеграция с ONNX Runtime - Инструменти за оценка на производителността - **Инсталация и основна употреба**: ```bash # Install Olive pip install olive-ai ``` # Примерен Python скрипт за оптимизация на модели ```python from olive.model import ONNXModel from olive.workflows import run_workflow # Define model and optimization config model = ONNXModel("original_model.onnx") config = { "input_model": model, "systems": { "local_system": { "type": "LocalSystem" } }, "engine": { "log_severity_level": 0, "cache_dir": "cache" }, "passes": { "quantization": { "type": "OrtQuantization", "config": { "quant_mode": "static", "activation_type": "int8", "weight_type": "int8" } } } } # Run optimization workflow result = run_workflow(config) optimized_model = result.optimized_model # Save optimized model optimized_model.save("optimized_model.onnx") ``` ### Apple MLX (потребители на macOS) - **Хранилище**: [Apple MLX на GitHub](https://github.com/ml-explore/mlx) - **Цел**: Рамка за машинно обучение за Apple Silicon - **Основни характеристики**: - Нативна оптимизация за Apple Silicon - Ефективни операции с паметта - API, подобен на PyTorch - Поддръжка на унифицирана архитектура на паметта - **Инсталация и основна употреба**: ```bash # Install MLX pip install mlx ``` ```python # Example Python script for loading and optimizing a model import mlx.core as mx import mlx.nn as nn from mlx.utils import tree_flatten # Load pre-trained weights (example with a simple MLP) class MLP(nn.Module): def __init__(self, dim=768, hidden_dim=3072): super().__init__() self.fc1 = nn.Linear(dim, hidden_dim) self.fc2 = nn.Linear(hidden_dim, dim) def __call__(self, x): return self.fc2(mx.maximum(0, self.fc1(x))) # Create model and load weights model = MLP() weights = mx.load("original_weights.npz") model.update(weights) # Quantize the model weights to FP16 def quantize_weights(model): params = {} for k, v in tree_flatten(model.parameters()): params[k] = v.astype(mx.float16) model.update(params) return model quantized_model = quantize_weights(model) # Save quantized model mx.save("quantized_model.npz", quantized_model.parameters()) # Run inference input_data = mx.random.normal((1, 768)) output = quantized_model(input_data) ``` ### ONNX Runtime - **Хранилище**: [ONNX Runtime на GitHub](https://github.com/microsoft/onnxruntime) - **Цел**: Ускорение на извеждането за ONNX модели на различни платформи - **Основни характеристики**: - Оптимизации, специфични за хардуера (CPU, GPU, NPU) - Графични оптимизации за извеждане - Поддръжка на квантизация - Поддръжка на различни езици (Python, C++, C#, JavaScript) - **Инсталация и основна употреба**: ```bash # Install ONNX Runtime pip install onnxruntime # For GPU support pip install onnxruntime-gpu ``` ```python import onnxruntime as ort import numpy as np # Create inference session with optimizations sess_options = ort.SessionOptions() sess_options.graph_optimization_level = ort.GraphOptimizationLevel.ORT_ENABLE_ALL sess_options.enable_profiling = True # Enable performance profiling # Create session with provider selection for hardware acceleration providers = ['CUDAExecutionProvider', 'CPUExecutionProvider'] # Use GPU if available session = ort.InferenceSession("model.onnx", sess_options, providers=providers) # Prepare input data input_name = session.get_inputs()[0].name input_shape = session.get_inputs()[0].shape input_data = np.random.rand(*input_shape).astype(np.float32) # Run inference outputs = session.run(None, {input_name: input_data}) # Get profiling data prof_file = session.end_profiling() print(f"Profiling data saved to: {prof_file}") ``` ## 5. Препоръчителна литература и ресурси ### Основна документация - **ONNX Runtime документация**: Разбиране на извеждането на различни платформи - **Ръководство за Hugging Face Transformers**: Зареждане и извеждане на модели - **Edge AI Design Patterns**: Най-добри практики за крайно внедряване ### Технически статии - "Efficient Edge AI: A Survey of Quantization Techniques" - "Model Compression for Mobile and Edge Devices" - "Optimizing Transformer Models for Edge Computing" ### Ресурси на общността - **EdgeAI Slack/Discord Communities**: Подкрепа и дискусии с колеги - **GitHub хранилища**: Примерни реализации и уроци - **YouTube канали**: Технически анализи и уроци ## 6. Оценка и проверка ### Контролен списък преди курса - [ ] Инсталиран и проверен Python 3.10+ - [ ] Инсталиран и проверен .NET 8+ - [ ] Конфигурирана среда за разработка - [ ] Създаден акаунт в Hugging Face - [ ] Основни познания за целевите семейства модели - [ ] Инсталирани и тествани инструменти за квантизация - [ ] Покрити хардуерни изисквания - [ ] Настроени акаунти за облачно изчисление (ако е необходимо) ## Основни учебни цели До края на това ръководство ще можете: 1. Да настроите пълна среда за разработка за EdgeAI приложения 2. Да инсталирате и конфигурирате необходимите инструменти и рамки за оптимизация на модели 3. Да изберете подходящи хардуерни и софтуерни конфигурации за вашите EdgeAI проекти 4. Да разберете ключовите съображения за внедряване на AI модели на крайни устройства 5. Да подготвите системата си за практическите упражнения в курса ## Допълнителни ресурси ### Официална документация - **Python документация**: Официална документация за езика Python - **Microsoft .NET документация**: Официални ресурси за разработка с .NET - **ONNX Runtime документация**: Изчерпателно ръководство за ONNX Runtime - **TensorFlow Lite документация**: Официална документация за TensorFlow Lite ### Инструменти за разработка - **Visual Studio Code**: Лек редактор на код с разширения за AI разработка - **Jupyter Notebooks**: Интерактивна среда за изчисления за ML експерименти - **Docker**: Платформа за контейнеризация за последователни среди за разработка - **Git**: Система за контрол на версиите за управление на код ### Ресурси за обучение - **EdgeAI научни статии**: Най-нови академични изследвания за ефективни модели - **Онлайн курсове**: Допълнителни учебни материали за AI оптимизация - **Форуми на общността**: Платформи за въпроси и отговори за предизвикателства в EdgeAI разработката - **Бенчмарк набори от данни**: Стандартни набори от данни за оценка на производителността на модели ## Резултати от обучението След завършване на това ръководство ще: 1. Имате напълно конфигурирана среда за разработка, готова за EdgeAI разработка 2. Разбирате хардуерните и софтуерните изисквания за различни сценарии за внедряване 3. Сте запознати с ключовите рамки и инструменти, използвани в курса 4. Можете да изберете подходящи модели според ограниченията и изискванията на устройствата 5. Притежавате основни знания за техники за оптимизация за крайно внедряване ## ➡️ Какво следва - [04: EdgeAI Хардуер и внедряване](04.EdgeDeployment.md) --- **Отказ от отговорност**: Този документ е преведен с помощта на AI услуга за превод [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля, имайте предвид, че автоматичните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия оригинален език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Не носим отговорност за каквито и да било недоразумения или погрешни интерпретации, произтичащи от използването на този превод.