# Раздел 1: Разширено обучение с SLM - Основи и оптимизация Малките езикови модели (SLMs) представляват ключов напредък в EdgeAI, позволявайки сложни възможности за обработка на естествен език на устройства с ограничени ресурси. Разбирането как ефективно да се внедряват, оптимизират и използват SLMs е от съществено значение за изграждането на практични AI решения за периферни устройства. ## Въведение В този урок ще разгледаме Малките езикови модели (SLMs) и техните стратегии за разширено внедряване. Ще обхванем основните концепции за SLMs, техните параметрични граници и класификации, техники за оптимизация и стратегии за практическо внедряване в среди за периферни изчисления. ## Цели на обучението До края на този урок ще можете: - 🔢 Да разберете параметричните граници и класификациите на Малките езикови модели. - 🛠️ Да идентифицирате ключови техники за оптимизация за внедряване на SLMs на периферни устройства. - 🚀 Да научите как да внедрявате разширени стратегии за квантизация и компресия за SLMs. ## Разбиране на параметричните граници и класификации на SLMs Малките езикови модели (SLMs) са AI модели, създадени да обработват, разбират и генерират съдържание на естествен език със значително по-малко параметри от техните големи аналози. Докато Големите езикови модели (LLMs) съдържат стотици милиарди до трилиони параметри, SLMs са специално проектирани за ефективност и внедряване на периферни устройства. Рамката за класификация на параметрите ни помага да разберем различните категории на SLMs и техните подходящи случаи на употреба. Тази класификация е от решаващо значение за избора на правилния модел за специфични сценарии на периферни изчисления. ### Рамка за класификация на параметрите Разбирането на параметричните граници помага при избора на подходящи модели за различни сценарии на периферни изчисления: - **🔬 Микро SLMs**: 100M - 1.4B параметри (ултра-лек за мобилни устройства) - **📱 Малки SLMs**: 1.5B - 13.9B параметри (балансирана производителност и ефективност) - **⚖️ Средни SLMs**: 14B - 30B параметри (приближаващи се до възможностите на LLMs, но запазващи ефективността) Точната граница остава гъвкава в изследователската общност, но повечето практици считат модели с по-малко от 30 милиарда параметри за "малки", като някои източници поставят прага дори по-ниско на 10 милиарда параметри. ### Основни предимства на SLMs SLMs предлагат няколко основни предимства, които ги правят идеални за приложения на периферни изчисления: **Оперативна ефективност**: SLMs осигуряват по-бързо време за извод благодарение на по-малкия брой параметри за обработка, което ги прави идеални за приложения в реално време. Те изискват по-малко изчислителни ресурси, което позволява внедряване на устройства с ограничени ресурси, като същевременно консумират по-малко енергия и поддържат намален въглероден отпечатък. **Гъвкавост при внедряване**: Тези модели позволяват AI възможности на устройството без изисквания за интернет свързаност, подобряват поверителността и сигурността чрез локална обработка, могат да бъдат персонализирани за приложения, специфични за дадена област, и са подходящи за различни среди на периферни изчисления. **Икономическа ефективност**: SLMs предлагат икономически ефективно обучение и внедряване в сравнение с LLMs, с намалени оперативни разходи и по-ниски изисквания за честотна лента за периферни приложения. ## Стратегии за придобиване на разширени модели ### Екосистема Hugging Face Hugging Face служи като основен център за откриване и достъп до най-съвременните SLMs. Платформата предоставя изчерпателни ресурси за откриване и внедряване на модели: **Функции за откриване на модели**: Платформата предлага разширено филтриране по брой параметри, тип лиценз и показатели за производителност. Потребителите могат да получат достъп до инструменти за сравнение на модели, резултати от реални тестове за производителност и оценки, както и WebGPU демонстрации за незабавно тестване. **Курирани колекции от SLMs**: Популярни модели включват Phi-4-mini-3.8B за задачи с разширено разсъждение, серията Qwen3 (0.6B/1.7B/4B) за многоезични приложения, Google Gemma3 за ефективни задачи с общо предназначение и експериментални модели като BitNET за внедряване с ултра-ниска прецизност. Платформата също така включва колекции, управлявани от общността, със специализирани модели за специфични области и предварително обучени и оптимизирани варианти за различни случаи на употреба. ### Каталог на модели Azure AI Foundry Каталогът на модели Azure AI Foundry предоставя достъп до SLMs с подобрени възможности за интеграция: **Интеграция за предприятия**: Каталогът включва модели, продавани директно от Azure с поддръжка на ниво предприятие и SLA, включително Phi-4-mini-3.8B за разширени възможности за разсъждение и Llama 3-8B за производствено внедряване. Той също така включва модели като Qwen3 8B от надеждни трети страни с отворен код. **Предимства за предприятия**: Вградени инструменти за фина настройка, наблюдение и отговорен AI са интегрирани с гъвкав Provisioned Throughput за различни семейства модели. Директната поддръжка от Microsoft с SLA за предприятия, интегрирани функции за сигурност и съответствие и изчерпателни работни потоци за внедряване подобряват опита на предприятията. ## Разширени техники за квантизация и оптимизация ### Рамка за оптимизация Llama.cpp Llama.cpp предоставя най-съвременни техники за квантизация за максимална ефективност при внедряване на периферни устройства: **Методи за квантизация**: Рамката поддържа различни нива на квантизация, включително Q4_0 (4-битова квантизация с отлично намаляване на размера - идеална за мобилно внедряване на Qwen3-0.6B), Q5_1 (5-битова квантизация, балансираща качество и компресия - подходяща за периферно извеждане на Phi-4-mini-3.8B) и Q8_0 (8-битова квантизация за почти оригинално качество - препоръчана за производствено използване на Google Gemma3). BitNET представлява върха на технологиите с 1-битова квантизация за екстремни сценарии на компресия. **Ползи от внедряването**: Оптимизирано извеждане на CPU с ускорение чрез SIMD осигурява ефективно зареждане и изпълнение на модели. Съвместимостта между платформи за x86, ARM и Apple Silicon архитектури позволява внедряване, независимо от хардуера. **Пример за практическо внедряване**: ```bash # Clone and build llama.cpp git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp mkdir build && cd build cmake .. -DCMAKE_BUILD_TYPE=Release cmake --build . --config Release # Convert Phi-4-mini model from Hugging Face to GGUF format # First, download the model from Hugging Face cd .. python convert.py --outtype f16 --outfile phi-4-mini.gguf /path/to/downloaded/phi-4-mini/model # Quantize the model to 4-bit precision (Q4_0) ./build/bin/quantize phi-4-mini.gguf phi-4-mini-q4_0.gguf q4_0 # Benchmark the model to check performance ./build/bin/llama-bench -m phi-4-mini-q4_0.gguf -p "Write a function to calculate the Fibonacci sequence" # Run inference with the quantized model ./build/bin/main -m phi-4-mini-q4_0.gguf -n 512 -p "Explain quantum computing in simple terms" ``` **Сравнение на паметта**: ```python # Python script to analyze model size differences import os import matplotlib.pyplot as plt import numpy as np # Model sizes (in GB) models = ['Phi-4-mini', 'Qwen3-0.6B', 'Gemma3'] original_sizes = [7.6, 1.2, 4.8] # F16 format q4_0_sizes = [2.0, 0.35, 1.3] # Q4_0 format q8_0_sizes = [3.9, 0.68, 2.5] # Q8_0 format # Calculate reduction percentages q4_reduction = [(orig - q4) / orig * 100 for orig, q4 in zip(original_sizes, q4_0_sizes)] q8_reduction = [(orig - q8) / orig * 100 for orig, q8 in zip(original_sizes, q8_0_sizes)] print("Model Size Reduction:") for i, model in enumerate(models): print(f"{model}: Q4_0 reduces size by {q4_reduction[i]:.1f}%, Q8_0 reduces size by {q8_reduction[i]:.1f}%") # Memory usage during inference will be approximately: # - Original F16: ~2x model size # - Q4_0: ~1.2x model size # - Q8_0: ~1.5x model size ``` ### Оптимизационен пакет Microsoft Olive Microsoft Olive предлага изчерпателни работни потоци за оптимизация на модели, предназначени за производствени среди: **Техники за оптимизация**: Пакетът включва динамична квантизация за автоматичен избор на прецизност (особено ефективна с модели от серията Qwen3), оптимизация на графики и сливане на оператори (оптимизирани за архитектурата на Google Gemma3), хардуерно-специфични оптимизации за CPU, GPU и NPU (със специална поддръжка за Phi-4-mini-3.8B на ARM устройства) и многоетапни оптимизационни тръбопроводи. Моделите BitNET изискват специализирани работни потоци за 1-битова квантизация в рамките на Olive. **Автоматизация на работния процес**: Автоматизирано тестване на различни варианти на оптимизация гарантира запазване на качествените показатели по време на оптимизацията. Интеграцията с популярни ML рамки като PyTorch и ONNX предоставя възможности за оптимизация както за облачни, така и за периферни внедрения. **Пример за практическо внедряване**: ```python # Microsoft Olive optimization workflow for SLM from olive.model import PyTorchModel, ONNXModel from olive.workflows import run_workflow from transformers import AutoModelForCausalLM, AutoTokenizer import torch # Define the workflow configuration def create_olive_config(model_id="microsoft/phi-4-mini-instruct"): # Load model and create sample inputs tokenizer = AutoTokenizer.from_pretrained(model_id) model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=torch.float16) # Create sample inputs for tracing sample_text = "Explain the concept of edge computing" inputs = tokenizer(sample_text, return_tensors="pt") # Export to ONNX first model_path = f"{model_id.split('/')[-1]}.onnx" torch.onnx.export( model, (inputs["input_ids"],), model_path, input_names=["input_ids"], output_names=["logits"], dynamic_axes={ "input_ids": {0: "batch", 1: "sequence"}, "logits": {0: "batch", 1: "sequence"} }, opset_version=15 ) # Create Olive optimization config config = { "input_model": ONNXModel(model_path), "systems": { "local_system": { "type": "LocalSystem" } }, "passes": { # Graph optimization pass "graph_optimization": { "type": "OrtTransformersOptimization", "config": { "optimization_options": { "enable_gelu": True, "enable_layer_norm": True, "enable_attention": True, "use_multi_head_attention": True } } }, # Quantization pass for INT8 "quantization": { "type": "OrtQuantization", "config": { "quant_mode": "static", "activation_type": "int8", "weight_type": "int8", "op_types_to_quantize": ["MatMul", "Add", "Conv"] }, "disable_search": True } }, "engine": { "log_severity_level": 0, "cache_dir": "./cache" } } return config # Run the optimization workflow config = create_olive_config() result = run_workflow(config) # Save the optimized model optimized_model = result.optimized_model optimized_model.save("./optimized_phi4_mini") # Benchmark performance comparison print(f"Original model size: {os.path.getsize(model_path) / (1024 * 1024):.2f} MB") print(f"Optimized model size: {os.path.getsize('./optimized_phi4_mini/model.onnx') / (1024 * 1024):.2f} MB") ``` ### Рамка Apple MLX Apple MLX предоставя родна оптимизация, специално проектирана за устройства с Apple Silicon: **Оптимизация за Apple Silicon**: Рамката използва унифицирана архитектура на паметта с интеграция на Metal Performance Shaders, автоматично извеждане с смесена прецизност (особено ефективно с Google Gemma3) и оптимизирано използване на честотната лента на паметта. Phi-4-mini-3.8B показва изключителна производителност на чипове от серията M, докато Qwen3-1.7B осигурява оптимален баланс за внедрения на MacBook Air. **Функции за разработка**: Поддръжка на Python и Swift API с операции, съвместими с NumPy, възможности за автоматична диференциация и безпроблемна интеграция с инструменти за разработка на Apple предоставят изчерпателна среда за разработка. **Пример за практическо внедряване**: ```python # Apple MLX optimization for Phi-4-mini model import mlx.core as mx import mlx.nn as nn from transformers import AutoTokenizer, AutoModelForCausalLM from mlx_lm import load, generate # Install the required packages # pip install mlx transformers mlx-lm # Load the Phi-4-mini model with MLX optimization model_path = "microsoft/phi-4-mini-instruct" model, tokenizer = load(model_path) # Convert to float16 for better performance on Apple Silicon model.convert_to_float16() # Sample inference prompt = "Write a function to find prime numbers in Python" results = generate( model, tokenizer, prompt=prompt, max_tokens=512, temperature=0.7, top_p=0.9, ) print(results[0]["generation"]) # Benchmark the model import time def benchmark_inference(model, tokenizer, prompt, runs=10): # Warmup generate(model, tokenizer, prompt=prompt, max_tokens=128) # Benchmark start_time = time.time() for _ in range(runs): generate(model, tokenizer, prompt=prompt, max_tokens=128) end_time = time.time() avg_time = (end_time - start_time) / runs return avg_time avg_inference_time = benchmark_inference(model, tokenizer, "Explain quantum computing") print(f"Average inference time: {avg_inference_time:.4f} seconds") # Save the optimized model for later use model.save_weights("phi4_mini_optimized_mlx.npz") ``` ## Стратегии за производствено внедряване и извеждане ### Ollama: Опростено локално внедряване Ollama улеснява внедряването на SLMs с функции, готови за предприятия, за локални и периферни среди: **Възможности за внедряване**: Инсталиране и изпълнение на модели с една команда с автоматично изтегляне и кеширане на модели. Поддръжка за Phi-4-mini-3.8B, цялата серия Qwen3 (0.6B/1.7B/4B) и Google Gemma3 с REST API за интеграция на приложения и възможности за управление и превключване между множество модели. Моделите BitNET изискват експериментални конфигурации за поддръжка на 1-битова квантизация. **Разширени функции**: Поддръжка за персонализирано фино настройване на модели, генериране на Dockerfile за контейнеризирано внедряване, GPU ускорение с автоматично откриване и опции за квантизация и оптимизация на модели предоставят изчерпателна гъвкавост при внедряване. ### VLLM: Високопроизводително извеждане VLLM осигурява оптимизация за производствено извеждане за сценарии с висока пропускателна способност: **Оптимизации на производителността**: PagedAttention за ефективно изчисление на вниманието (особено полезно за трансформаторната архитектура на Phi-4-mini-3.8B), динамично групиране за оптимизация на пропускателната способност (оптимизирано за паралелна обработка на серията Qwen3), паралелизъм на тензори за мащабиране на множество GPU (поддръжка за Google Gemma3) и спекулативно декодиране за намаляване на латентността. Моделите BitNET изискват специализирани ядра за извеждане за 1-битови операции. **Интеграция за предприятия**: API крайни точки, съвместими с OpenAI, поддръжка за внедряване в Kubernetes, интеграция за наблюдение и наблюдаемост и възможности за автоматично мащабиране предоставят решения за внедряване на ниво предприятие. ### Foundry Local: Решението на Microsoft за периферни устройства Foundry Local предоставя изчерпателни възможности за внедряване на периферни устройства за среди на ниво предприятие: **Функции за периферни изчисления**: Дизайн на архитектурата "offline-first" с оптимизация за ограничени ресурси, управление на локален регистър на модели и възможности за синхронизация между периферни устройства и облак осигуряват надеждно внедряване на периферни устройства. **Сигурност и съответствие**: Локална обработка на данни за запазване на поверителността, контроли за сигурност на ниво предприятие, регистриране на одити и докладване за съответствие и управление на достъпа на базата на роли предоставят изчерпателна сигурност за внедрения на периферни устройства. ## Най-добри практики за внедряване на SLMs ### Насоки за избор на модели При избора на SLMs за внедряване на периферни устройства, вземете предвид следните фактори: **Съображения за броя на параметрите**: Изберете микро SLMs като Qwen3-0.6B за ултра-леки мобилни приложения, малки SLMs като Qwen3-1.7B или Google Gemma3 за балансирани сценарии на производителност и средни SLMs като Phi-4-mini-3.8B или Qwen3-4B, когато се приближавате до възможностите на LLMs, но запазвате ефективността. Моделите BitNET предлагат експериментална ултра-компресия за специфични изследователски приложения. **Съответствие с случаите на употреба**: Съобразете възможностите на модела със специфичните изисквания на приложението, като вземете предвид фактори като качество на отговорите, скорост на извеждане, ограничения на паметта и изисквания за офлайн работа. ### Избор на стратегия за оптимизация **Подход към квантизацията**: Изберете подходящи нива на квантизация въз основа на изискванията за качество и хардуерните ограничения. Вземете предвид Q4_0 за максимална компресия (идеална за мобилно внедряване на Qwen3-0.6B), Q5_1 за балансиран компромис между качество и компресия (подходяща за Phi-4-mini-3.8B и Google Gemma3) и Q8_0 за запазване на почти оригиналното качество (препоръчана за производствени среди с Qwen3-4B). 1-битовата квантизация на BitNET представлява крайния фронт на компресията за специализирани приложения. **Избор на рамка**: Изберете рамки за оптимизация въз основа на целевия хардуер и изискванията за внедряване. Използвайте Llama.cpp за оптимизирано внедряване на CPU, Microsoft Olive за изчерпателни работни потоци за оптимизация и Apple MLX за устройства с Apple Silicon. ## Практически примери за модели и случаи на употреба ### Сценарии за внедряване в реалния свят **Мобилни приложения**: Qwen3-0.6B се отличава в приложения за чатботове на смартфони с минимален отпечатък на паметта, докато Google Gemma3 предоставя балансирана производителност за образователни инструменти на таблети. Phi-4-mini-3.8B предлага превъзходни възможности за разсъждение за мобилни приложения за продуктивност. **Настолни и периферни изчисления**: Qwen3-1.7B осигурява оптимална производителност за приложения за настолни асистенти, Phi-4-mini-3.8B предоставя разширени възможности за генериране на код за инструменти за разработчици, а Qwen3-4B позволява сложен анализ на документи в работни среди. **Изследователски и експериментални**: Моделите BitNET позволяват изследване на извеждане с ултра-ниска прецизност за академични изследвания и приложения за доказване на концепция, изискващи екстремни ограничения на ресурсите. ### Сравнения и показатели за производителност --- **Отказ от отговорност**: Този документ е преведен с помощта на AI услуга за превод [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за недоразумения или погрешни интерпретации, произтичащи от използването на този превод.