Тонкая настройка LLMs с ограниченным бюджетом: использование GPU Droplets
Введение
Тонкая настройка крупных языковых моделей больше не требует больших затрат или требовательной инфраструктуры уровня предприятия. Доступные облачные решения, такие как GPU Droplets от DigitalOcean, которые предлагают мощные H100 или RTX 6000, позволяют разработчикам и небольшим командам полностью контролировать и уверенно развертывать ИИ модели. Будь то создание более умного чат-бота, конкретного помощника или просто исследование возможностей генеративного ИИ, инструменты стали более доступными, чем когда-либо. Реальная проблема? Найти доступные, надежные ресурсы GPU, не сопряженные со сложными счетами или запутанной настройкой.
Вот где вступают в игру GPU Droplets от DigitalOcean.
В этой статье мы разберемся, почему тонкая настройка больших языковых моделей важна, как GPU Droplets упрощают и делают её более доступной, а также поделимся разумными стратегиями, чтобы уменьшить использование GPU, снизить затраты и при этом получить хорошую производительность, даже с ограниченным бюджетом.
Ключевые моменты
- Тонкая настройка LLM позволяет адаптировать модели к конкретным областям, улучшая производительность в таких задачах, как поддержка клиентов, суммирование или генерация кода.
- Полная донастройка часто является дорогой из-за высоких требований к памяти, вычислительным ресурсам и хранилищу больших моделей.
- GPU Droplets от DigitalOcean предоставляют доступную альтернативу, позволяя разработчикам использовать NVIDIA и AMD GPUs по запросу без долгосрочных обязательств.
- Эффективные по параметрам методы дообучения (PEFT), такие как LoRA и QLoRA, значительно уменьшают требования к GPU при сохранении точности.
- Квантование (например, INT8, INT4) помогает уменьшить размер модели и повысить скорость, позволяя LLM работать на ограниченном оборудовании.
- Открытые модели, такие как LLaMA 3, Mistral, TinyLlama и Phi-2, оптимизированы для тонкой настройки и лучше подходят для бюджетных систем.
- Инструменты отслеживания, такие как Weights & Biases или TensorBoard, помогают организовать и эффективно управлять вашими экспериментами.
- Лучшие практики, такие как контроль градиентов, планирование обучения в нерабочее время и уничтожение бездействующих капель, помогают экономить средства.
Почему тонкая настройка LLM важна?
Мощные модели, такие как Llama, Mistral или GPT, обучены на огромном объеме данных. Они мощные и также являются универсальными моделями, поскольку могут отвечать на широкий спектр вопросов, выполнять задачи и выполнять многие задания достаточно хорошо. Однако эти модели могут не всегда давать самые точные ответы, если им предоставляются конкретные случаи использования.
Вот где находит применение тонкая настройка.
Дополнение обучения — это процесс продолжения обучения существующей модели на вашем собственном наборе данных. Дополнение обучения помогает адаптировать модель, чтобы она усваивала контекст, жаргон и стиль, которые важны для вашего приложения.
Например, общий язык модели может испытывать трудности с предоставлением точных ответов на технические вопросы о программном обеспечении вашей компании. Но после дообучения на документации по продукту или чатах поддержки она становится гораздо лучше в ответах на эти запросы, почти как внутренний эксперт.
Почему полное тонкое обучение традиционно дорогое
Полная дообучение больших языковых моделей (LLM) включает в себя обновление всех параметров в процессе обучения, а современные LLM имеют миллиарды параметров. Этот процесс требует значительных вычислительных ресурсов, особенно мощных графических процессоров (GPU) с большим объемом памяти (VRAM), быстрых соединений и достаточной пропускной способности для быстрой передачи огромных объемов данных.
Например, тонкая настройка модели с 7 миллиардами и более параметрами, такой как LLaMA или Mistral, может потребовать множества GPU A100 или H100, работающих в течение нескольких часов или даже дней, в зависимости от размера набора данных и конфигураций пакетов. Помимо аппаратного обеспечения, также необходима распределенная конфигурация, надежное хранилище и мощные инструменты оркестрации для управления обучением и контрольными точками. Все это приводит к высоким операционным и инфраструктурным расходам, что недоступно для многих индивидуальных разработчиков, исследователей или небольших команд.
Не говоря уже о том, что обучение может занять часы или даже дни, что означает более длительное время работы и увеличенное потребление энергии.
Почему стоит выбрать GPU-дроплеты?
Теперь мы все знаем, что настройка крупных языковых моделей или любых глубинных моделей машинного обучения обычно сопровождается высокими затратами на инфраструктуру. Традиционные цены на облачные GPU могут быть пугающими, особенно когда вы просто экспериментируете, часто итераируете или работаете с ограниченным бюджетом.
GPU Дроплеты предлагают простой, удобный для разработчиков способ выполнения нагрузок с интенсивным использованием GPU, включая донастройку LLM. Ключевые преимущества включают:
- Доступные цены
- Мощные графические процессоры
- Разработчик Простоты
- Масштабируйтесь по мере продвижения
| Тип GPU | Часовая цена (по запросу) | GPU Память | Капельная Память | виртуальный процессор |
|---|---|---|---|---|
| NVIDIA RTX 4000 Ada | 0.76 доллара | 20 ГБ | 32 ГиБ | 8 |
| NVIDIA RTX 6000 Ada/L40S | 1.57 доллара | 48 ГБ | 64 ГиБ | 8 |
| AMD MI300X (Одиночный) | 1.99 доллара | 192 ГБ | 240 ГиБ | 20 |
| NVIDIA H100 (одинарный) | 3.39–6.74 долларов США | 80 ГБ | 240 ГиБ | 20 |
| NVIDIA H100x8 | 2.99 долларов за GPU | 640 ГБ | 1,920 ГиБ | 160 |
| AMD MI300Xx8 | 1,99 $за GPU | 1,536 ГБ | 1,920 ГиБ | 160 |
Резервное ценообразование — более глубокие скидки за долгосрочное использование
Если вы планируете длительные циклы обучения или размещение моделей в производстве, зарезервированная цена предлагает значительную экономию затрат. При 12-месячном обязательстве вы можете получить доступ к мощным GPU за небольшую часть цены по запросу:
| Тип GPU | Резервная цена (/GPU/ч) |
|---|---|
| NVIDIA H100x8 | 1.99 доллара |
| AMD MI325Xx8 | 1.69 доллара |
| AMD MI300Xx8 | 1.49 доллара |
Эта зарезервированная конфигурация идеальна для команд или индивидуумов, которым нужен непрерывный доступ к большим вычислительным мощностям, но которые хотят контролировать бюджет.
Включение метрик GPU на GPU-дроплетах DigitalOcean с помощью DCGM
Всегда полезно отслеживать использование GPU при обучении или дообучении ваших AI моделей. С DigitalOcean’s AI/ML-ready GPU Droplets легко включить и отслеживать здоровье GPU, метрики памяти и температуры, используя NVIDIA DCGM (Data Center GPU Manager) и DCGM Exporter.
Вот краткий обзор того, как начать:
Используйте каплю, готовую к ИИ/МЛ
Создайте GPU Droplet, используя образ, готовый для ИИ/МЛ, который уже включает драйверы и инструменты NVIDIA. Для пользовательских образов вам нужно будет вручную установить драйверы и DCGM.
Установить DCGM
Установите DCGM с помощью простой команды:
sudo apt-get install -y datacenter-gpu-manager sudo systemctl restart systemd-journald
Для капель с 8 GPU вам также потребуется установить:
- Библиотека NSCQ (специфично для вашей версии драйвера)
- NVIDIA Fabric Manager (обычно предустановлен в изображениях ИИ/МО)
Включите и запустите службу DCGM
Запустите DCGM в автономном режиме, чтобы он запускался автоматически:
sudo systemctl --now enable nvidia-dcgm
Проверьте, что это работает:
sudo service nvidia-dcgm status
Запустите DCGM Exporter в Docker
Чтобы выставить метрики GPU на HTTP-эндпоинте (полезно для Prometheus или пользовательских панелей управления), используйте DCGM Exporter в контейнере Docker:
sudo apt-get install -y docker.io nvidia-ctk runtime configure --runtime=docker systemctl restart docker
Затем запустите экспортёр:
docker run -d --rm --gpus all --net host --cap-add SYS_ADMIN nvcr.io/nvidia/k8s/dcgm-exporter:<version>-ubuntu22.04 -r localhost:5555 -f /etc/dcgm-exporter/dcp-metrics-included.csv
Проверить метрики
Проверьте, работает ли конечная точка метрик:
curl localhost:9400/metrics
Вы увидите статистику GPU в реальном времени, такую как частоты, температура памяти и использование.
GPU Droplets против Bare Metal GPUs: Когда что использовать
DigitalOcean также предоставляет доступ к Bare Metal GPU, которые представляют собой выделенные серверы с одним арендатором, предназначенные для задач с высокой производительностью. Если возникает необходимость обучать большие модели, запускать сложные потоки данных или если рабочая нагрузка требует полного контроля над аппаратным обеспечением, стабильной производительности и длительной работы, в таких случаях лучше выбрать bare metal. GPU Droplets идеально подходят для быстрого старта и гибких рабочих нагрузок, таких как дообучение моделей, запуск инференса или обработка умеренных наборов данных. Эти виртуальные машины предлагают простое развертывание, почасовую оплату и достаточно мощности для большинства задач AI/ML без накладных расходов на управление оборудованием. GPU Droplets обеспечивают правильный баланс между производительностью и простотой.
Стратегии тонкой настройки LLM на бюджет
1. Используйте эффективные параметры тонкой настройки (PEFT)
Существуют определенные стратегии, которые определенно могут помочь эффективно настроить любую крупную языковую модель. Одна из них — это эффективная настройка параметров (Parameter-Efficient Fine-Tuning, PEFT). PEFT позволяет настраивать модель без необходимости обновления всех параметров, что экономит не только вычислительные ресурсы, но и память. Вместо повторной тренировки всей модели, методы PEFT, такие как LoRA (низкоранговая адаптация) или QLoRA (квантованная низкоранговая адаптация), модифицируют только небольшую часть параметров, оставляя остальные фиксированными.
Этот подход резко снижает требования к GPU и ускоряет обучение, что делает его идеальным для ограниченных бюджетов. Вместо того чтобы полагаться на дорогостоящие экземпляры с большим объемом памяти, вы можете достичь конкурентоспособной производительности, используя более мощные графические процессоры, такие как NVIDIA RTX 4000 Ada или MI300X на DigitalOcean.
from peft import LoraConfig, get_peft_model lora_config = LoraConfig( r=8, lora_alpha=32, target_modules=["q_proj", "v_proj"], lora_dropout=0.05, bias="none", task_type="CAUSAL_LM" ) model = get_peft_model(base_model, lora_config)
2. Используйте открытые модели
Открытые модели, такие как LLaMA 3, Mistral, Phi-3 и TinyLlama, предназначены для того, чтобы обеспечивать высокую производительность, оставаясь при этом легкими, что позволяет запускать их на более малом, доступном аппаратном обеспечении. Эти модели не только бесплатны для использования и модификации, но многие из них также оптимизированы для эффективной доработки и быстрого вывода, что делает их идеальными для разработчиков с ограниченным бюджетом.
from transformers import AutoModelForCausalLM, AutoTokenizer model_name = "mistralai/Mistral-7B-v0.1" model = AutoModelForCausalLM.from_pretrained(model_name, device_map="auto")
3. Оптимизация с помощью квантизации
Использование квантованных моделей (например, INT4, INT8) также может значительно уменьшить объем памяти без значительной потери точности. Квантование — это способ сделать модели машинного обучения меньшими и более быстрыми, уменьшая точность используемых чисел. Допустим, ваша модель имеет число, такое как 7,892345678, хранящееся в 32 бита (что занимает много памяти). Вместо того чтобы сохранять все эти цифры, квантование округляет его до чего-то более простого, например, 8, и хранит его, используя всего 8 бит. Это небольшое изменение экономит много места для миллионов (или миллиардов) параметров в модели.
Один из самых популярных методов бюджетной тонкой настройки — это QLoRA (Квантованный низкоранговый адаптер), который сочетает в себе 4-битную квантизацию с LoRA-адаптерами для достижения эффективного обучения. Он использует библиотеку bitsandbytes для загрузки квантованных моделей и выполнения тонкой настройки с минимальным использованием памяти. Вы загружаете модель с точностью 4 бита, используя bitsandbytes, а затем обучаете лишь небольшое количество добавленных параметров LoRA. Это позволяет сделать как обучение, так и вывод быстрыми и доступными.
Попробуйте QLoRA + bitsandbytes для обучения с учетом квантизации.
pip install transformers datasets accelerate peft bitsandbytes #Load a Quantized Model from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig model_name = "meta-llama/Llama-2-7b-chat-hf" Set up 4-bit quantization bnb_config = BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_quant_type="nf4", bnb_4bit_compute_dtype="float16" ) model = AutoModelForCausalLM.from_pretrained( model_name, quantization_config=bnb_config, device_map="auto" ) tokenizer = AutoTokenizer.from_pretrained(model_name) tokenizer.pad_token = tokenizer.eos_token
#Add LoRA for PEFT from peft import get_peft_model, LoraConfig, TaskType peft_config = LoraConfig( r=8, lora_alpha=16, target_modules=["q_proj", "v_proj"], lora_dropout=0.05, bias="none", task_type=TaskType.CAUSAL_LM ) model = get_peft_model(model, peft_config) model.print_trainable_parameters()
Советы по бонусам
Теперь давайте обсудим несколько дополнительных советов, которые могут помочь более эффективно настроить модели:
-
Отслеживайте процесс удаленно с помощью таких инструментов, как Weights & Biases (WandB) или TensorBoard. Такие инструменты, как WandB или TensorBoard, позволяют вам в реальном времени отслеживать метрики обучения, такие как потери и точность, прямо из вашего браузера. Таким образом, вам не нужно держать ваш Droplet открытым только для проверки журналов, что экономит время и деньги.
-
Используйте
gradient_checkpointing=True, чтобы сохранить VRAM. Контроль градиента снижает использование памяти, жертвуя некоторыми вычислениями ради экономии памяти. Он хранит меньше промежуточных активаций и пересчитывает их во время обратного распространения, что помогает вам обучать более крупные модели на более маленьких графических процессорах. -
Тренируйтесь в непиковые часы (если возможно). Это может показаться уловкой, но доступность и производительность графических процессоров иногда могут быть лучше в нерабочее время (например, поздно ночью или в выходные). Старайтесь избегать пиковых часов, и иногда этот прием может помочь и вам.
-
Всегда уничтожайте ваш GPU Droplet, когда закончите. Не просто останавливайте экземпляр; уничтожьте его. Это гарантирует, что вы не будете платить за неиспользуемые ресурсы. Забыть сделать это — один из самых распространенных способов, как люди случайно накапливают свои счета.
-
Регулярно сохраняйте контрольные точки, особенно для длительных заданий. Если ваш процесс обучения прерывается (из-за проблем с сетью, таймаутов и т.д.), сохраненные контрольные точки позволяют вам продолжить с того места, где вы остановились, вместо того чтобы начинать заново. Это экономит как время, так и часы работы GPU.
Заключение
Настройка LLM больше не должна стоить целое состояние. С DigitalOcean GPU Droplets и используя некоторые советы и трюки, разработчики и стартапы могут легко настраивать мощные модели с открытым исходным кодом недорого и эффективно. Объединив умные техники, такие как LoRA, квантование и использование легковесных моделей с открытым исходным кодом, вы можете добиться впечатляющей производительности, даже с ограниченным бюджетом. Так что, если вы сдерживались от настройки из-за затрат, пришло время начать использовать доступные GPU-опции от DigitalOcean и воплотить свои идеи в жизнь.
Полезные ссылки
- Как создать и настроить дисковые капли с графическими процессорами
- Начало работы с моделями 1-Click на GPU Droplets — Руководство по Llama 3.1 с Hugging Face
- Узнайте, как создать приложение RAG с использованием GPU Droplets
- Масштабирование с помощью GPU-дробщиков и сетевых решений DigitalOcean
- Цены на градиентные GPU капли


Добавить комментарий