Здравствуйте, дорогие друзья!
Я уверен, что многие из вас, работая с генеративными нейросетями, столкнулись с катастрофической нехваткой свободного места на жестких дисках и, в частности, на системном диске. Сегодня я хочу поделиться с вами несколькими вариантами, которые возможно смогут помочь вам в решении этой проблемы.
Многие считают, что проблема именно в самой нейросети, и что она непомерно "жрёт" дисковое пространство, но это не совсем так, большую часть места "съедает" кэш самого Python'a и устанавливаемые зависимости, коих для корректной работы любой нейросети используется достаточно большое количество. И в процессе, вы, поиграв с одной нейросетью удалив её и поставив другую в недоумении смотрите на цифры и не понимаете, кудааа делось 5 гигабайт, ведь я её удалил, но нет, неиспользуемые зависимости от другой\старой нейросети остаются на вашем системном жестком диске.
Чтобы хоть частично решить эту проблему, мы можем изменить директорию, куда скачиваются устанавливаемые файлы зависимостей и в которой хранится кэш, и сделать это можно несколькими способами.
1. Измените переменную среды TEMP в своей ОС.
Чтобы настроить переменные среды, нажмите правой кнопкой мыши на "Мой Компьютер" - "Свойства" - "Дополнительные параметры системы" - в окне «Свойства системы» нажмите «Переменные среды».
Нажмите на переменную, которую вы хотите изменить, нажмите «Изменить».
- Здесь, мы также можем задать или изменить расположение переменной окружения 'PIP_CACHE_DIR'. Чтобы сделать это, в разделе "Пользовательские переменные для <*имя пользователя*>", нажмите кнопку "Создать".
Укажите имя переменной PIP_CACHE_DIR и задайте желаемое расположение для кэша в качестве значения переменной (например, G:\path\cache).
Нажмите "OK", чтобы закрыть все окна.
После этого все операции установки пакетов с использованием PIP будут использовать указанную директорию для хранения кеша.
Не забудьте заменить C:\path\cache на фактический путь к директории, в которую вы хотите переместить кэш.
2. Откройте командную строку прописав в строке поиска вашей ОС команду CMD.
Введите необходимую команду из указанных ниже.
- Команда pip config set предназначена для установки значений в файл конфигурации pip.
В вашем случае, чтобы установить\сменить кэш-директорию, вы должны использовать следующую команду в командной строке:
pip config set global.cache-dir g:\Cache (пример) "ваша буква диска:\ваша директория"
Будет назначена кэш-директория в (пример) "G:\Cache" для всех пользователей и проектов.
После ввода этой команды будет автоматически создан файл инициализации в котором будет прописана новая, указанная вами директория и теперь весь кэш Python и кэш всех устанавливаемых зависимостей будет храниться именно там куда вы его отправили.
После ввода команды перейдите к C:\Users\*имя пользователя*\AppData\Roaming\pip и если по какой то причине вы не обнаружили папку pip или файл pip.ini внутри неё то просто создайте папку\файл pip.txt и переименуйте в pip.ini. Отредактируйте pip.ini с помощью notepad и добавьте этот код:
[global]
no-cache-dir = false
download-cache = (ваш путь на другой диск) G:\pip\cache
Теперь вы можете удалить файлы pip предварительно скопировав уже имеющиеся файлы в только что созданную директорию из папки C:\User\*имя пользователя*\AppData\Local\pip, так как все установки будут использовать путь указанный в pip.ini.
- Используя флаг --no-cache-dir при установке пакетов, вы говорите pip устанавливать пакеты без использования кэша. По умолчанию pip сохраняет загруженные пакеты в кэше, чтобы избежать повторной загрузки при последующих установках.
Чтобы установить пакет без кэширования загруженных файлов, используйте следующую команду:
pip install --no-cache-dir package_name
Например, если вы хотите установить пакет "requests", но не хотите кэшировать загруженные файлы, вы должны использовать следующую команду:
pip install --no-cache-dir requests
Если вы хотите установить несколько пакетов, вы можете перечислить их после команды pip install --no-cache-dir, разделяя их пробелами:
pip install --no-cache-dir requests numpy pandas
Убедитесь, что вы указываете название действительного пакета, который вы хотите установить.
- Команда pip cache purge удаляет все файлы из кэша pip, включая загруженные и установленные пакеты. Кэш pip может содержать ранее загруженные пакеты, их версии, и другие временные файлы.
Однако, следует быть осторожным при использовании этой команды, поскольку она удалит все файлы из кэша, включая установленные пакеты, и придется заново загружать или устанавливать их.
Перед использованием команды pip cache purge важно понимать, готовы ли вы переустановить все пакеты.
- Если по какой-то причине очистка кэша pip cache purge не сработала, вы можете определить, какая папка занимает больше всего места на вашем системном диске, с помощью программы WinDirStat. Затем вручную удалите папки, которые весят больше всего. По умолчанию некоторые из них находятся по пути c:\Users\*имя пользователя*\ (.cache .huggingface).
- Если вы используете Fooocus, то в дополнение к предыдущим манипуляциям вам необходимо в файле run.bat дописать следующие аргументы запуска:
--output-path (пример) "G:\IMG" - сохраняет все ваши сгенерированные изображения в указанную директорию
--temp-path (пример) "G:\TEMP" - переносит все временные файлы в указанную вами директорию (с версии 2.3.0 эта папка автоматически очищается при каждом запуске)
--cache-path (пример) "G:\Cache" переносит кэш в указанную вами директорию
Так должна выглядеть строка запуска в Fooocus:
.\python_embeded\python.exe -s Fooocus\entry_with_update.py --output-path "D:\Art" --temp-path "G:\TEMP" --cache-path "G:\Cache"
pause
В заключение, хочу подчеркнуть, что описанные выше методы не являются универсальным решением проблемы нехватки места на диске. К сожалению, все файлы кэша и другие файлы не могут быть полностью перенесены на другой диск, и некоторые из них все равно останутся на вашем системном диске.
В качестве альтернативы, вы можете полностью отказаться от установки Python, Git и других программных пакетов и использовать портативные версии нейросетей.
Я постараюсь подготовить материалы по этой теме в ближайшее время. Также, если вам интересна тема репаков различных сборок нейросетей, русификаторов и других материалов, следите за опросами, которые я буду периодически проводить. Благодаря им я смогу понять, какая нейросеть для вас наиболее интересна и какой материал мне стоит готовить в первую очередь.
На этом все. Надеюсь, информация была для вас полезной.
Ну и конечно же, если вам понравилась эта статья, буду рад вашим подпискам, комментариям и лайкам. Недавно я запустил Discord-канал и постараюсь поддерживать его насколько возможно, там вы сможете не только следить за новостями, но и общаться, делиться опытом и приобретать новые знания о нейросетях. Чтобы всегда быть в курсе моих новых материалов, подписывайтесь на мой Boosty, Telegram-канал и страницу "ВКонтакте". Пока что нас немного, но я надеюсь, что с течением времени сообщество станет больше. Это станет отличной мотивацией для меня активно работать и над другими социальными сетями.
Благодарю за внимание и всего доброго!