- PVSM.RU - https://www.pvsm.ru -
Всё начиналось невинно. Как и у многих, наш стек AI-инструментов (полный список — военная тайна, сорян, NDA) на этапе гипотез скромно кушал с 3080 TI. Потом пошло-поехало: 4080, а там и до 4090 TI рукой подать.
Но настоящий щелчок по носу случился, когда наши модели перевалили за 55 ГБ видеопамяти. Мinimum viable product внезапно потребовал maximum viable hardware.
Первая мысль — спаять несколько карт в кучу. Ан нет! Наш основной инструмент, ComfyUI, как оказалось, крайне криво работает с несколькими GPU. Одна карта — генератор, остальные — дорогущие костыли для видеопамяти. Экономика проекта плакала и просила пощады.
Осознание было жестоким: нужны промышленные монстры — серверные карты Nvidia Tesla. Мы, как добропорядочные ребята, пошли к цивилизованным провайдерам. Взяли на тест H100 у immers клауда.
Мощность — огонь! Скорость — космос! Счет... тоже космос. Скромные прикидочные расчеты на сервер с 8 картами показали $18-19K в месяц. Только на R&D! Мы не Илон Маск, чтобы так жечь деньги.
Когда все дороги ведут в финансовый тупик, умный человек смотрит на Восток. В нашем случае — на Китай.
Да, есть нюансы. Из-за экспортных ограничений арендовать полноценную H100 не выйдет. Но китайцы, как всегда, нашли выход — урезанная, но всё ещё очень мощная H20. И главное — цена в несколько раз дешевле местных провайдеров. Мы потеплели душой и ринулись в бой.
Наивные.
Мы думали, что взяли сервер. На самом деле мы купили билет в аттракцион невиданной жестокости под названием «Настройка окружения в КНР».
Проблема №1: Доставка образа. Вы когда-нибудь пытались загрузить образ ПО на 50+ ГБ на китайский сервер? Великий Фаервол Китая режет скорость так, будто вы качаете интернет через два консервных провода. Это был день… нет, два дня медитативного ожидания.
Проблема №2: Мир без GitHub и Pip. Представьте: вы привыкли, что воздух бесплатный, а тут вам его перекрыли. В Китае нет доступа к привычным pip install и git clone. Все ваши скрипты установки превращаются в тыкву. Зеркала есть, но это ловушка для самоуверенных.
Важное экспертное отступление: Если в оригинальном репозитории версия библиотеки 2.3.5 и в китайском зеркале — 2.3.5, это НЕ ОЗНАЧАЕТ, что это один и тот же файл. Всегда проверяйте хеши. Будьте параноиком: в зависимостях могут быть инъекции. Ваша безопасность — только ваша забота.
Проблема №3: Волшебный пинок и китайский язык. Решение пришло с неожиданной стороны. Спасибо сотрудникам Tencent Cloud, которые реально пытались помочь. Да, для этого пришлось включить Duolingo и поднапрячься с китайским, но это того стоило. Вывод: иногда прямой человеческий контакт решает то, что не могут решить технологии.
Вы думали, что после настройки сети всё заработает? Как бы не так!
С H20 есть своя магия. Даже если официальная документация кричит о совместимости версий драйверов CUDA и вашего софта — это ложь. Нужно подбирать драйвера и версии библиотек методом тыка, по факту работы. Особенно nvidia-ctk.
Экспертный лайфхак: Если используете контейнеры (Docker), ваша главная задача — убедиться, что инстансы ВНУТРИ контейнера видят CUDA. Внешняя совместимость хоста — это лишь полдела. Потратили на эту магию еще пару дней.
Итак, спустя 4 дня битвы, окружение завелось. Мощности — в несколько раз дешевле. Нервы — частично восстановлены.
Резюме для тех, кто ищет дешёвые AI-мощности:
Вариант А: Китай. Это дёшево, но будьте готовы к:
Битве с Фаерволом и скоростью.
Отсутствию прямого доступа к GitHub и Pip.
Тщательной проверке всех зависимостей из зеркал.
Танцам с бубном вокруг драйверов и совместимости.
Языковому барьеру (но он преодолим).
Вариант Б: Складчина. Если нет ресурсов бороться с китайской спецификой, ищите единомышленников и скидывайтесь на сервер вместе. Менее гибко, зато голова не болит.
Наш выбор в данной ситуации — Китай. Да, это хардкор. Но когда вопрос стоит между «вообще никак» и «сложно, но можно», мы выбираем второе.
Надеюсь, наш опыт сэкономит вам не только деньги, но и пару тысяч нервных клеток. Делитесь своими историями выживания в комментариях!
P.S. Если встретите в Пекине человека, который матерится на русском, устанавливая PyTorch, — это, возможно, наш DevOps. Передайте ему привет.
И немного полезных вам скриптов, надеюсь окажутся вам полезными.
# Удаление всех драйверов и зависимостей
sudo apt purge nvidia cuda libcuda -y
sudo apt autoremove -y
sudo rm -rf /usr/local/cuda* ~/.nv/
sudo find /usr -name "nvidia" -exec rm -rf {} ;
sudo find /usr -name "cuda" -exec rm -rf {} ;
# Поиск, если вдруг где-то что-то осталось
sudo find / -type f -name "nvidia" 2>/dev/null
sudo find / -type f -name "cuda" 2>/dev/null
sudo find / -type d -name "nvidia" 2>/dev/null
sudo find / -type d -name "cuda" 2>/dev/null
# Получение статуса по установленным зависимостям
python3 -c "import torch; print(f'PyTorch version: {torch.version}');
print(f'CUDA available: {torch.cuda.is [1]_available()}');
print(f'GPU count: {torch.cuda.device_count()}');
print(f'Current device: {torch.cuda.current_device()}');
print(f'Device name: {torch.cuda.get_device_name(0)}')"
#Пример ответа
PyTorch version: 2.7.1+cu126
CUDA available: True
GPU count: 8
Current device: 0
Device name: NVIDIA H20
# Общий скрипт проверки, назовем его test.py
import os
import torch
print("1. Проверка переменных окружения:")
print(f"LD_LIBRARY_PATH: {os.getenv('LD_LIBRARY_PATH')}")
print(f"PATH: {os.getenv('PATH')}")
print("n2. Прямой доступ к устройствам:")
try:
with open('/dev/nvidia0', 'rb') as f:
print("Успешное чтение /dev/nvidia0")
except Exception as e:
print(f"Ошибка доступа к /dev/nvidia0: {str(e)}")
print("n3. Низкоуровневая проверка CUDA:")
try:
from ctypes import cdll
libcuda = cdll.LoadLibrary('libcuda.so [2]')
print("libcuda.so [2] успешно загружена")
print(f"Версия драйвера: {libcuda.cuDriverGetVersion()}")
except Exception as e:
print(f"Ошибка загрузки libcuda.so [2]: {str(e)}")
print("n4. Тест PyTorch:")
try:
print(f"PyTorch version: {torch.version}")
print(f"CUDA available: {torch.cuda.is [1]_available()}")
if torch.cuda.is [1]_available():
print(f"GPU count: {torch.cuda.device_count()}")
print(f"Device 0: {torch.cuda.get_device_name(0)}")
except Exception as e:
print(f"Ошибка PyTorch: {str(e)}")
Автор: killersssurprise
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/china/437715
Ссылки в тексте:
[1] torch.cuda.is: http://torch.cuda.is
[2] libcuda.so: http://libcuda.so
[3] Источник: https://habr.com/ru/articles/971770/?utm_source=habrahabr&utm_medium=rss&utm_campaign=971770
Нажмите здесь для печати.