Найти тему

Как изменить расположение Cache в Python и генеративных нейросетях.

Здравствуйте, дорогие друзья!

Я уверен, что многие из вас, работая с генеративными нейросетями, столкнулись с катастрофической нехваткой свободного места на жестких дисках и, в частности, на системном диске. Сегодня я хочу поделиться с вами несколькими вариантами, которые возможно смогут помочь вам в решении этой проблемы.

Многие считают, что проблема именно в самой нейросети, и что она непомерно "жрёт" дисковое пространство, но это не совсем так, большую часть места "съедает" кэш самого Python'a и устанавливаемые зависимости, коих для корректной работы любой нейросети используется достаточно большое количество. И в процессе, вы, поиграв с одной нейросетью удалив её и поставив другую в недоумении смотрите на цифры и не понимаете, кудааа делось 5 гигабайт, ведь я её удалил, но нет, неиспользуемые зависимости от другой\старой нейросети остаются на вашем системном жестком диске.

Чтобы хоть частично решить эту проблему, мы можем изменить директорию, куда скачиваются устанавливаемые файлы зависимостей и в которой хранится кэш, и сделать это можно несколькими способами.

1. Измените переменную среды TEMP в своей ОС.

Чтобы настроить переменные среды, нажмите правой кнопкой мыши на "Мой Компьютер" - "Свойства" - "Дополнительные параметры системы" - в окне «Свойства системы» нажмите «Переменные среды».

-2

Нажмите на переменную, которую вы хотите изменить, нажмите «Изменить».

Изменяете оба значения TMP и TEMP указывая нужный вам диск.
Изменяете оба значения TMP и TEMP указывая нужный вам диск.
-4
  • Здесь, мы также можем задать или изменить расположение переменной окружения 'PIP_CACHE_DIR'. Чтобы сделать это, в разделе "Пользовательские переменные для <*имя пользователя*>", нажмите кнопку "Создать".

Укажите имя переменной PIP_CACHE_DIR и задайте желаемое расположение для кэша в качестве значения переменной (например, G:\path\cache).

Нажмите "OK", чтобы закрыть все окна.

После этого все операции установки пакетов с использованием PIP будут использовать указанную директорию для хранения кеша.

Не забудьте заменить
C:\path\cache на фактический путь к директории, в которую вы хотите переместить кэш.

-5

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.

-6
  • Используя флаг --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

Убедитесь, что вы указываете название действительного пакета, который вы хотите установить.

-7
  • Команда pip cache purge удаляет все файлы из кэша pip, включая загруженные и установленные пакеты. Кэш pip может содержать ранее загруженные пакеты, их версии, и другие временные файлы.

Однако, следует быть осторожным при использовании этой команды, поскольку она удалит все файлы из кэша, включая установленные пакеты, и придется заново загружать или устанавливать их.

Перед использованием команды pip cache purge важно понимать, готовы ли вы переустановить все пакеты.

  • Если по какой-то причине очистка кэша pip cache purge не сработала, вы можете определить, какая папка занимает больше всего места на вашем системном диске, с помощью программы WinDirStat. Затем вручную удалите папки, которые весят больше всего. По умолчанию некоторые из них находятся по пути c:\Users\*имя пользователя*\ (.cache .huggingface).
-8

  • Если вы используете 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

-9

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

В качестве альтернативы, вы можете полностью отказаться от установки Python, Git и других программных пакетов и использовать портативные версии нейросетей.

Я постараюсь подготовить материалы по этой теме в ближайшее время. Также, если вам интересна тема репаков различных сборок нейросетей, русификаторов и других материалов, следите за опросами, которые я буду периодически проводить. Благодаря им я смогу понять, какая нейросеть для вас наиболее интересна и какой материал мне стоит готовить в первую очередь.

На этом все. Надеюсь, информация была для вас полезной.

Ну и конечно же, если вам понравилась эта статья, буду рад вашим подпискам, комментариям и лайкам. Недавно я запустил Discord-канал и постараюсь поддерживать его насколько возможно, там вы сможете не только следить за новостями, но и общаться, делиться опытом и приобретать новые знания о нейросетях. Чтобы всегда быть в курсе моих новых материалов, подписывайтесь на мой Boosty, Telegram-канал и страницу "ВКонтакте". Пока что нас немного, но я надеюсь, что с течением времени сообщество станет больше. Это станет отличной мотивацией для меня активно работать и над другими социальными сетями.
Благодарю за внимание и всего доброго!