Свой ChatGPT на бесплатном VPS — просто и быстро!

Свой ChatGPT на бесплатном VPS — просто и быстро!

Ваш собственный ChatGPT на бесплатном VPS — просто и быстро!

Эта статья предназначена для разработчиков, имеющих базовые знания Python и Docker. Мы рассмотрим, как развернуть модель с Hugging Face на бесплатном VPS-сервере и создать HTTP-сервис для ее использования.

Я постараюсь объяснить тему доступным языком и привести практические примеры, чтобы вы могли легко применить полученные знания на практике. Даже если вы не планируете вникать в тонкости, просто следуйте инструкциям, и через 15 минут у вас будет работающий сервис.

Друзья, бесплатные VPS найти практически невозможно, а существующие VPS обычно не обеспечивают достаточной мощности для развертывания нейронных сетей. Но хорошая новость в том, что развертывание нейронных сетей при ограниченных ресурсах все еще возможно! В этом руководстве я покажу несколько рабочих приемов, которые позволят вам запускать модели даже на обычных бесплатных серверах.

В качестве языка разработки для этого проекта будет использоваться Python. Библиотека FastAPI также будет использоваться для создания службы API, которую, конечно же, можно будет контейнеризировать с помощью Docker для более простого развертывания.

мы должны:

1. Аккаунт HuggingFace

2. Ваша любимая IDE

Сначала создайте новое пространство

1. Перейдите в раздел Hugging Face Spaces.

2. Нажмите «Создать новое пространство”

3. Введите название пространства, которое вы создаете

3. Выберите Docker (обязательно!) → FastAPI не работает в шаблоне Gradio.

4. Выберите Blank в качестве шаблона Docker. Мы опишем наш шаблон

5. Нажмите кнопку «Создать

6. Клонируйте созданный репозиторий вместе с проектом

git clone https://huggingface.co/spaces/enter_your_account_name/enter_your_space_name

Давайте определим структуру проекта

Откройте клонированный репозиторий в вашей любимой среде IDE и настройте следующую структуру:

/корневой каталог вашего проекта │ │ .gitattributes │ │ Dockerfile │ README.md │ │ main.py └── requirements.txt

Рисунок 1 Структура проекта

Давайте опишем Dockerfile

запустите apt-get update && \ apt-get install -y \–no-install-recommends git g++ make && \ apt-get clean && \ rm -rf /var/lib/apt/lists/\* из python:3.9-slim WORKDIR /app Скопируйте requirements.txt. Запустите pip install \ –no-cache-dir -r requirements.txt Скопируйте main.py. ENV HF_HOME=/tmp/huggingface-cache ENV TOKENIZERS_PARALLELISM=false EXPOSE 7860 CMD [“uvicorn”, “main:app”, “\–host”, “0.0.0.0”, “\–port”, “7860”]

Рисунок 2 Dockerfile

Dockerfile довольно прост, единственное, на что я хочу обратить ваше внимание, это переменные окружения

_ENV HF_HOME=/tmp/huggingface-cache:_

> Установите переменную среды HF_HOME, которую библиотека Hugging Face использует для хранения кэшей моделей и токенизаторов. В этом случае кэш будет сохранен во временном каталоге /tmp.

_ENV TOKENIZERS_PARALLELISM=false:_

> Установите для переменной среды TOKENIZERS_PARALLELISM значение false, что поможет избежать проблем с потоками при использовании тегера Hugging Face.

Добавьте зависимости в ваш проект

Для запуска нашего приложения нам понадобятся следующие зависимости

fastapi==0.109.0 uvicorn==0.27.0 torch==2.2.1 \–index-url https://download.pytorch.org/whl/cpu transforms==4.40.2 acceleration==0.29.3 sentencepiece==0.2.0 numpy==1.26.4 protobuf==3.20.3

Рисунок 3. Список зависимостей

Давайте начнем писать API нашего сервиса

В качестве модели была выбрана TinyLlama/TinyLlama-1.1B-Chat-v1.0. Модель хорошо соответствует нашим ограничениям и обеспечивает хорошую производительность. Однако вы можете выбрать любую другую модель, которая соответствует вашим потребностям.

from fastapi import FastAPI, HTTPException from pydantic import BaseModel from transforms import AutoModelForCausalLM, AutoTokenizer, pipeline import torch import numpy as np # Проверка версии NumPy assert np.__version__.startswith(‘1.’), f”Несовместимая версия NumPy: {np.__version__}” app = FastAPI() class RequestData(BaseModel): prompt: str max_tokens: int = 50 MODEL_NAME = “TinyLlama/TinyLlama-1.1B-Chat-v1.0″ try: # Загрузка модели с явной картой устройств tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME) model = AutoModelForCausalLM.from_pretrained(MODEL_NAME, torch_dtype=torch.float32, device_map=”auto”, low_cpu_mem_usage=True) # Создаём конвейер без указания устройства generator = pipeline(“text-generation”, model=model, tokenizer=tokenizer) except Exception e: print(f”Model load error: {str(e)}”) generator = None @app.post(“/generate”) async def generate_text(request: RequestData): if not a generator: raise HTTPException(status_code=503, detail=”Model not loaded”) try: output = generator(request.prompt, max_new_tokens=min(request.max_tokens, 100), do_sample=False, num_beams=1, temporary=0.7,) return {“response”: output[0][“generated_text”]} except Exception e: raise HTTPException(status_code=500, detail=str(e)) @app.get(“/health”) async def health_check(): if generator returns “unavailable” затем верните {“status”: “ok”}

Рисунок 4 Основной код программы

эта программа демонстрирует, как создать собственный сервис, который принимает POST-запрос к /generate и возвращает ответ в формате JSON. Особое внимание хочу обратить на следующий блок кода:

выход = генератор(запрос.prompt, max_new_tokens=min(запрос.max_tokens, 100), do_sample=False, num_beams=1, температура=0.7,)

Рисунок 5. Список опций

Все эти параметры связаны с настройками генерации текста в библиотеках нейронных сетей, таких как Hugging Face Transformers. Полное описание всех опций и их значений можно найти в официальной документации библиотеки.

Теперь осталось только зафиксировать и отправить все внесенные вами изменения. После этого на сервере запустится предварительно настроенный CI/CD. Нажмите на ссылку:

https://huggingface.co/spaces/введите_имя_вашего_аккаунта/введите_имя_вашего_spaces?logs=container

Вы также можете наблюдать за процессом сборки. После завершения вы можете отправить свой первый запрос:

curl -X POST “https://your_account_name-your_space_name.hf.space/generate” \-H “Content-Type: application/json” \-d'{“prompt”:”Что такое погода?”}’

рис. 6 запрос на завивку

Если вы все сделали правильно, то вы получите ответ на свой запрос, который будет выглядеть примерно так:

{“response”:”Что такое Docker?\n\nDocker — это инструмент для создания и развертывания контейнеров на базе Linux. Он позволяет вам создавать и развертывать приложения на Linux.”}

Рисунок 7. Запрос ответа

Поздравляю! Вы успешно развернули собственную нейронную сеть на своем VPS, и теперь она связана с вашей учетной записью.

Заключение

Наконец, стоит отметить, что свободное пространство на платформе Hugging Face работает на общем CPU/GPU и имеет некоторые ограничения:

Автоматическое выключение:

Если API не получит ни одного запроса в течение 48 часов, Space «перейдет в спящий режим». Первый запрос после этого будет медленным (около 30 секунд). –

– Тайм-аут запроса:

Запросы, выполнение которых занимает более 1–2 минут, будут автоматически прекращены.

– Без графического процессора:

Модели работают на процессоре, что может замедлить обработку больших запросов.

– Автоматическое удаление:

Hugging Face может удалить пространство, если оно неактивно более 90 дней.

Как избежать “засыпания”?

1. Периодические запросы: отправляйте запрос один раз в день (можно использовать «cron» или службу вроде UptimeRobot

2. Уведомления: настройте мониторинг и получайте уведомления от Hugging Face при возникновении ошибок.

Альтернативы

Если вам нужно бесплатное и простое решение → Hugging Face Spaces + FastAPI.

Если вам нужно работать 24/7 без «сна» → Google Cloud Run или Fly.io. Если вам нужен графический процессор и низкая задержка → Конечные точки вывода Hugging Face.

Что делать дальше?

Если вам необходимо ограничить доступ к вашему сервису, вы можете добавить авторизацию. Чтобы ускорить работу модели на ЦП, попробуйте использовать квантование — это уменьшит ее размер и ускорит обработку запросов без существенного снижения точности. Как только ваш проект будет готов к производству, разверните его с помощью Hugging Face Inference Endpoints или Google Cloud Run, чтобы упростить масштабирование и управление вашей инфраструктурой.

Если вам понравился этот пост, то вы знаете, что делать — подписывайтесь, ставьте лайки и делайте репост. Это лучшая поддержка для автора. С вами автор канала Юрий Дубовицкий

Илья

Главный редактор сервиса TopCheck.ru

Мы будем рады Вашему комментарию!

Написать комментарий

Топчек.ру - агрегатор отзывов о курсах, обучении и онлайн-школах | Агрегатор курсов и программ онлайн обучения
Logo
Список для сравнения
  • Total (0)
Сравнить
0
Ninja Silhouette 9 hours ago

Joe Doe in London, England purchased a

Joe Doe in London?

Joe Doe in London, England purchased a

Joe Doe in London?

Joe Doe in London, England purchased a

Joe Doe in London?

Joe Doe in London, England purchased a

Shopping cart