Свой ChatGPT на бесплатном VPS — просто и быстро!
Я постараюсь объяснить данную тему доступным языком и предоставить практические примеры, чтобы вы могли легко применить полученные знания на практике. Даже если вы не планируете глубоко разбираться в тонкостях — просто следуйте инструкциям, и через 15 минут у вас будет работающий сервис.
Друзья, бесплатные VPS почти не встречаются, а те, что есть, часто не обеспечивают достаточную мощность для разворачивания нейросетей. Но хорошие новости — развернуть нейросеть на ограниченных ресурсах всё ещё возможно! В этом руководстве я покажу рабочие методы, которые позволяют запускать модели даже на скромных бесплатных серверах.
В качестве языка, на котором будет разрабатываться проект, будем использован python. Также будет использоваться FastAPI библиотека, для создания API сервиса и конечно контейнеризация через Docker для простоты развёртывания.
Что нам потребуется:
1. Аккаунт на HuggingFace
2. Ваша любимая IDE
Для начала создайте новый Space
1. Перейдите в Hugging Face Spaces.
2. Нажмите "New Space"
3. Введите название создаваемого пространства
3. Выберите Docker (обязательно!) → FastAPI не работает в Gradio-шаблонах.
4. В качестве docker template выберите Blank. Мы будем описывать свой шаблон
5. Нажмите на кнопку «Создать»
6. Склонируем созданный репозиторий с проектом
Зададим структуру проекта
Откройте склонированный репозиторий в вашей любимой IDE и задайте следующую структуру:
Рис.1 Структура проекта
Опишем Dockerfile
Рис.2 Dockerfile
Dockerfile достаточно понятен, единственное, хочу заострить ваше внимание на переменных окружение
_ENV HF_HOME=/tmp/huggingface-cache:_
> Устанавливает переменную окружения HF_HOME, которая может использоваться библиотеками Hugging Face для хранения кэша моделей и токенизаторов. В данном случае кэш будет храниться во временной директории /tmp.
_ENV TOKENIZERS_PARALLELISM=false:_
> Устанавливает переменную окружения TOKENIZERS_PARALLELISM в значение false, что может помочь избежать проблем с многопоточностью при использовании токенизаторов Hugging Face.
Добавление зависимостей в проект
Для работы нашего приложения нам потребуются следующий зависимости
Рис.3 Список зависимостей
Приступим к написанию API сервиса
В качестве модели, была выбрана TinyLlama/TinyLlama-1.1B-Chat-v1.0. Эта модель отлично укладывается в наши ограничения, и дает неплохую производительность. Однако, вы вольны выбрать любую другую модель, удовлетворяющую вашим нуждам.
Рис.4 Основной код программы
В данной программе демонстрируется, как создать свой сервис, который принимает POST запросы по адресу /generate и возвращает ответ в виде json. Особое внимание я хочу уделить следущему блоку кода:
Рис.5. Список опций
Все эти параметры относятся к настройкам генерации текста в библиотеках для работы с нейросетями, такими как Hugging Face Transformers. Чтобы найти полное описание всех опций и их значений, вы можете обратиться к официальной документации библиотеки.
Теперь осталось только закомитить и запушить все сделанные изменения изменения. После того, как вы это сделали, на сервере запустится преднастроенный CI/CD. Перейдите по ссылке:
И вы можете наблюдать за процессом сборки. После его завершения, вы можете отправить ваш первый запрос:
Рис. 6 curl запрос
Если вы все сделали правильно, то получите ответ на ваш запрос следующего содержания:
Рис.7 Ответ на запрос
Поздравляем! Вы успешно развернули свою собственную нейросеть на вашем VPS, и теперь она привязана к вашему аккаунту.
Заключение
В заключении, стоит отметить, что бесплатные Spaces на платформе Hugging Face работают на общих CPU/GPU и имеют ряд ограничений:
- Автоотключение:
Если к API не поступает запросов в течение 48 часов, Space "уснёт". Первый запрос после этого будет медленным (около 30 секунд). -
- Таймаут запросов:
Запросы, выполняющиеся дольше 1-2 минут, будут автоматически завершены.
- Отсутствие GPU:
Модели работают на CPU, что может замедлить обработку больших запросов.
- Автоудаление:
Hugging Face может удалить Space, если он неактивен более 90 дней.
Как избежать "засыпания"?
1. Регулярные запросы: Отправляйте любой запрос раз в день (можно использовать `cron` или сервисы, такие как UptimeRobot
2. Уведомления: Настройте мониторинг, чтобы получать уведомления от Hugging Face при возникновении ошибок.
Альтернативы
Если вам нужно бесплатное и простое решение → Hugging Face Spaces + FastAPI.
Если требуется 24/7 без "засыпаний" → Google Cloud Run или Fly.io. Если нужен GPU и низкая задержка → Hugging Face Inference Endpoints.
Что делать дальше?
Если нужно ограничить доступ к вашему сервису, можно добавить авторизацию. Чтобы модель работала быстрее на CPU, попробуйте применить quantization — это уменьшит её размер и ускорит обработку запросов без серьёзного падения точности. Когда проект будет готов к продакшену, разверните его с помощью Hugging Face Inference Endpoints или Google Cloud Run — эти сервисы упростят масштабирование и управление инфраструктурой.
Если вам понравилась эта статья, то вы знаете что нужно делать — подписывайтесь, ставьте лайки и делайте репосты. Это лучшая поддержка для автора. С вами был Дубовицкий Юрий, автор канала
«Ваш код еще не готов, сэр» А наш код уже готов. До связи!