Установите сервер GenAI на имеющемся у вас оборудовании. Этот проект предоставляет веб-интерфейс для взаимодействия с моделями LLaMA и стабильной диффузии (среди прочих) для создания текста, изображений, видео и 3D.
Многие люди имеют под рукой хороший графический процессор и готовы использовать его вместо оплаты подписок на OpenAI, Anthropic и т. д. Здесь вы можете размещать свои собственные модели ИИ, хотя и со многими ограничениями по сравнению с этими замечательными сервисами. Затем вы сможете получить к нему доступ из любого места с помощью веб-браузера, например, с телефона или другого компьютера.
Интерфейс для этого размещен на страницах GitHub, а серверная часть — на вашем доступном сервере.
После настройки интерфейс будет доступен по адресу https://[username].github.io/PersonalAIserver
. Следуйте инструкциям ниже, чтобы настроить серверную часть.
Для внешнего интерфейса необходимо настроить только действие GitHub для создания страницы проекта. В разветвленном репозитории перейдите в Settings -> Pages -> Source
» и установите для него значение «Действия GitHub». Сборка запустится автоматически при отправке в репозиторий благодаря файлу .github/workflows/main.yml
.
Если вы хотите запустить интерфейс локально, следуйте инструкциям ниже. Требуется Node.js, который можно установить из диспетчера версий узла (nvm).
nvm install 20
npm install -D @shadcn/ui
npx shadcn@latest init # Select default style, any color, and dont use css variables.
npx shadcn@latest add alert button card input textarea # Accept defaults
npm install lucide-react
npm install -D @tailwindcss/typography
npm install clsx tailwind-merge
npm install
npm install sharp
npm run dev
Это должно обслуживать интерфейс по адресу http://localhost:3000
, к которому вы можете получить доступ через веб-браузер.
Для управления пакетами используется conda, но вы можете использовать любой другой менеджер пакетов.
В вашем терминале во внутреннем каталоге выполните следующие команды:
conda create -n personalai python=3.11
conda activate personalai
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
pip install -r requirements.txt
users.json
во внутреннем каталоге следующего формата: {
"username1": {
"username": "username1",
"password": "password1",
"disabled": false
},
"username2": {
"username": "username2",
"password": "password2",
"disabled": false
}
...
}
.secret
во внутреннем каталоге со случайной строкой по вашему выбору. Это используется для шифрования токена JWT. Я рекомендую создать его с помощью: import secrets
secret_key = secrets.token_hex(32)
print(secret_key)
а затем скопируйте вывод.
Settings -> Secrets and variables -> Actions
в вашем разветвленном репозитории.NEXT_PUBLIC_API_URL
и значением URL-адреса внутреннего сервера (подробнее ниже). Пример: https://api.example.com
.backend/backend.py
настройте CORSMiddleware
рядом со строкой 40, чтобы включить URL-адреса вашего внешнего интерфейса.huggingface-cli login
и используйте свой личный токен доступа, созданный выше, в качестве пароля.python backend/backend.py --public
или удалите --public
, если вы хотите запускать сервер только на локальном хосте. Localhost также требует, чтобы вы запускали интерфейс локально.Существует множество вариантов размещения серверной части по общедоступному URL-адресу, но я рекомендую использовать Cloudflare Tunnel. Cloudflare Tunnel направляет трафик из Интернета на ваш сервер, не раскрывая порт или ваш локальный IP-адрес. Он также поддерживает HTTPS, SSL-шифрование и защиту от DDoS, а также другие функции безопасности, которые в противном случае вам пришлось бы настраивать и поддерживать самостоятельно.
Другие варианты включают в себя:
Для Cloudflare Tunnel вам понадобится доменное имя и учетная запись Cloudflare.
cloudflared tunnel login
. На этом шаге откроется окно браузера для входа в вашу учетную запись Cloudflare.cloudflared tunnel create genai-api
. На этом этапе генерируется идентификатор туннеля. Обратите внимание на это для следующих шагов. tunnel: <your-tunnel-id>
credentials-file: /home/user/.cloudflared/<tunnel-id>.json
ingress:
- hostname: <your-api-url>
service: http://localhost:8000
- service: http_status:404
<your-api-url>
должен быть доменным именем, которое вы зарегистрировали на серверах имен Cloudflare, и может быть субдоменом. Например, если у вас есть example.com
, вы можете использовать genai.example.com
или api.example.com
. 5. Создайте DNS-запись cloudflared tunnel route dns <tunnel-id> <your-api-url>
. Это создает туннель для Cloudflare, который будет маршрутизировать трафик из Интернета на ваш сервер, не раскрывая порт или ваш локальный IP-адрес.
В backend/backend.py
вы можете изменить используемые модели. Найдите в Hugging Face модель, которую вы хотите использовать для генерации текста/изображения, и настройте конфигурации модели ModelManager
(строка ~127). По умолчанию используется модель LLaMA 3.2-1B-Instruct для генерации текста и средняя модель Stable Diffusion 3.5 для генерации изображений. Ниже приведены требования к видеопамяти для каждой протестированной модели.
Тип модели | Название модели | Использование видеопамяти (ГБ) | Примечания |
---|---|---|---|
Текст | мета-лама/Llama-3.2-1B-Instruct | ~8 | Базовая модель для генерации текста |
Изображение | стабильностьай/стабильная-диффузия-3,5-средняя | ~13 | Хорошо работает на RTX 4090. |
Изображение | стабилностьай/стабильная-диффузия-3,5-большая | ~20-30 | Превышает 4090 видеопамяти для длинных запросов |
Примечание. Использование видеопамяти может варьироваться в зависимости от разрешения изображения, длины текстовых подсказок и других параметров. Показанные значения являются приблизительными для настроек по умолчанию. Поддерживаются модели квантованного преобразователя для дальнейшего снижения использования видеопамяти, но они не используются по умолчанию (см. строки 178–192 файла backend/backend.py
). Большая модель стабильной диффузии едва помещается в видеопамять моего 4090 с квантованием. Скорость чат-бота на моем 4090 чрезвычайно высока: генерация изображения занимает до 30 секунд на 100 шагов для изображений 1024x1024.
Системное приглашение для языковой модели можно найти в backend/system_prompt.txt
. На данный момент это версия модели Claude 3.5 Sonnet от Anthropic, выпущенной 22 октября 2024 года. https://docs.anthropic.com/en/release-notes/system-prompts#claude-3-5-sonnet