Showing posts with label python. Show all posts
Showing posts with label python. Show all posts

Friday, 8 November 2024

Про Photomaker и Forge.

Привет всем.

Вы наверное уже знаете что автор Forge решил разнообразить свой продукт и в интерфейс Forge добавил закладку Spaces куда портировал ряд проектов с портала huggingface Spaces

Есть среди них на закладке Spaces и популярный PhotomakerV2. Картинки для Instagram он делает просто на ура. Разумеется можно также легко пользоваться PhotomakerV2 и на портале huggingface, но там очень быстро наступает лимит по времени генерации что творческому человеку просто мука.

Однако не спешите радоваться, у меня PhotomakerV2 перестал работать после последнего обновления Forge. После недолгих поисков я обнаружил что PhotomakerV2 не дружит с новой версией xformers, или точнее сказать у xformers повысились требования к моей видеокарте и он ее обозвал "old model" именно при генерации с PhotomakerV2. В самом Forge с этим все Ок.

На мое счастье запустить его еще можно понизив версию xformers до 0.0.23, разумеется это не очень удобно так как встроенный Python используется от самого Forge. Но выпиливание PhotomakerV2 из Forge займет у вас еще больше времени. Поэтому у меня пока два портативных(!) Forge-a.

Из полезного могу добавить то что можно разнообразить стили в PhotomakerV2 дописав их в файл style_template.py в json-формате (пример ниже). Где взять? Можно аккуратно переписать их из Fooocus-а или из InstantID проекта:

style_list = [

{"name": "(No style)","prompt": "{prompt}","negative_prompt": "",},

{"name": "cinematic-default", "prompt": "cinematic still {prompt} . emotional, harmonious, vignette, highly detailed, high budget, bokeh, cinemascope, moody, epic, gorgeous, film grain, grainy", "negative_prompt": "anime, cartoon, graphic, text, painting, crayon, graphite, abstract, glitch, deformed, mutated, ugly, disfigured"},

{"name": "sai-3d-model", "prompt": "professional 3d model {prompt} . octane render, highly detailed, volumetric, dramatic lighting", "negative_prompt": "ugly, deformed, noisy, low poly, blurry, painting"},

{"name": "sai-analog film", "prompt": "analog film photo {prompt} . faded film, desaturated, 35mm photo, grainy, vignette, vintage, Kodachrome, Lomography, stained, highly detailed, found footage", "negative_prompt": "painting, drawing, illustration, glitch, deformed, mutated, cross-eyed, ugly, disfigured"}

и т.п.

Wednesday, 6 November 2024

Запуск ядерного ReActor-а.

Всем привет.

Судя по тому что у ИИ-гуру Antinoice есть отдельное руководство по фиксингу ReActor-а для ComfyUI надо к нему вернуться еще раз. Лично у меня ReActor находится в состоянии disabled виду того что с ним частенько конфликтуют ноды из других пакетов. А сам ReActor требует дополнительных шагов при установке.  Итак Antinoice советует поступать так:

1.Устанавливаем ReActor с помощью менеджера или качаем архив и распаковываем его в папку custom nodes.

Открываем папку ...\ComfyUI\custom_nodes\comfyui-reactor-node и запускаем файл install.bat.

2. Находим файл requirements.txt открываем его в блокноте и добавляем ещё одну строку:

 insightface==0.7.3

после чего сохраняем и закрываем блокнот.

3. Скачиваем файл insightface-0.7.3-cp311-cp311-win_amd64.whl отсюда (для Python версии 3.11):

https://github.com/Gourieff/Assets/blob/main/Insightface/insightface-0.7.3-cp311-cp311-win_amd64.whl

Или для Python версии 3.10:

https://github.com/Gourieff/Assets/blob/main/Insightface/insightface-0.7.3-cp310-cp310-win_amd64.whl

Или для Python версии 3.12:

https://github.com/Gourieff/Assets/blob/main/Insightface/insightface-0.7.3-cp312-cp312-win_amd64.whl

4. Помещаем наш файл в папку ...\python_embeded.

5. В этой же папке ...\python_embeded вверху в адресной строке папки прописываем cmd и нажимаем Enter - запустится консоль.

В консоль вставляем следующий текст:

python.exe -m pip install insightface-0.7.3-cp311-cp311-win_amd64.whl

и нажимаем Enter,  дожидаемся установки и после этого можна запускать ComfyUI. Файл insightface-0.7.3-cp311-cp311-win_amd64.whl можно удалить. А лучше спрятать, мало ли.

Все. На первый взгляд все просто.)

Monday, 28 October 2024

Release VRAM.

Hello.

Can I release VRAM of my videocard NVIDIA during the GenAI processes? Yes, there are a few ways to release VRAM without outright terminating processes, especially if you’re using GPU-accelerated libraries like PyTorch or TensorFlow, which provide methods to manage and release memory.

Here are some methods to release VRAM without killing processes:


1. Release VRAM in PyTorch

If you’re working in a PyTorch environment, you can release cached memory that’s no longer needed with `torch.cuda.empty_cache()`. This frees up any cached memory that PyTorch may still be holding onto.

```python

import torch

torch.cuda.empty_cache()  # Releases unused VRAM

```

This command does not affect active allocations but clears memory that might be cached by PyTorch.


2. Release VRAM in TensorFlow

In TensorFlow, you can reset the GPU memory allocation by clearing the session:

```python

from tensorflow.keras.backend import clear_session

clear_session()  # Releases memory used by TensorFlow

```

This is particularly helpful if you are done with a model or part of your code and want to free up GPU memory for another task.

Tuesday, 8 October 2024

Ручне оновлення в СomfyUI

Привіт усім.

Час від часу мій ComfyUI потребує до себе уваги на рівні командного рядка. Тому я вже маю шпаргалку коли мушу виконувати такі дії як оновлення окремого пакету python. Можливо і вам стане у нагоді.

Оновити pip (дуже часто таке вимагає консоль):

..\python_embeded\python.exe -m pip install --upgrade pip

Підняти версію diffusers до 0.30.3 (якщо того вимагає чергова custom node, але ви не маєте часу виясняти яка саме):

..\python_embeded\python.exe -m pip install diffusers==0.30.3

Оновити інтерфейс керування comfy_cli:

..\python_embeded\python.exe -m pip install --upgrade comfy_cli

Встановити бібліотеку insightface:

..\python_embeded\python.exe -m pip install insightface-0.7.3-cp310-cp310-win_amd64.whl

Встановити все що вимагає нода ComfyUI-SUPIR:

..\python_embeded\python.exe -m pip install -r ..\ComfyUI\custom_nodes\ComfyUI-SUPIR\requirements.txt

Оновити саме СomfyUI:

..\python_embeded\python.exe .\update.py ..\ComfyUI\

До речі за задумкою автора СomfyUI такого оновлення повинно вистачити у більшості випадків. Тому він попереджає нас так:

This will try to update pytorch and all python dependencies, if you get an error wait for pytorch/xformers to fix their stuff. You should not be running this anyways unless you really have to. If you just want to update normally, close this and run update_comfyui.bat instead.

Але якщо нам кортить працювати з новою версією pytorch та xformers (на свій власний ризик!) то ми робимо наступне:

..\python_embeded\python.exe -s -m pip install --upgrade torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu124 xformers -r ../ComfyUI/requirements.txt pygit2

або так, якщо нас цікавить версія developer:

..\python_embeded\python.exe -m pip uninstall torch torchvision torchaudio -y

 ..\python_embeded\python.exe -m pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu124

З свого досвіду загальний порядок такий: спочатку оновлюєте СomfyUI, потім робите повний ребут сервера, потім оновлюєте всі встановлені custom nodes, і знову робите повний ребут. Під час цього уважно слідкуєте за всім що пише (або свариться) консоль СomfyUI.

Щасти.

Tuesday, 1 October 2024

Запуск PowerShell из Python.

Всем привет.

Рассмотрим простой метод интеграции Python и PowerShell.

Самое простое выглядит так что если бы мы смогли исполнять CmdLet PowerShell из Python и перехватывать результаты. Так как PowerShell является неким исполняемым процессом, тем самым мы можем применять стандартную библиотеку Python, предоставляющую возможность запуска поцессов. Это делается с применением стандартной библиотеки subprocess. В Python для применения любой стандартной или сторонней библиотеки вам следует импортировать её. В данном случае это просто:

import subprocess 

Это предоставляет доступ к методам и свойствам, содержащимся в данной библиотеке subprocess. Доступно монжество вариантов - наиболее популярным является применение метода check.output, который исполняет предписанный процесс и возвращает полученный результат. Вот некий пример:

runningProcesses = subprocess.check_output("powershell -Executionpolicy ByPass -Command Get-Process") 

Существует также аналог асинхронного варианта вызова подчинённого процесса, вызов метода await asyncio.create_subprocess_shell()), подробнее в книгах Asyncio в Python 3 Цалеба Хаттингха и Полном руководстве параллельного программирования на Python Куан Нгуена:

import asyncio

async def run(cmd):

    proc = await asyncio.create_subprocess_shell(cmd, stdout=asyncio.subprocess.PIPE,      stderr=asyncio.subprocess.PIPE

    )

    stdout, stderr = await proc.communicate()

    print(f'[{cmd!r} exited with {proc.returncode}]')

    if stdout:

        print(f'[stdout]\n{stdout.decode()}')

    if stderr:

        print(f'[stderr]\n{stderr.decode()}')

asyncio.run(run('powershell -Executionpolicy ByPass -Command Get-Process'))

Friday, 13 September 2024

Интерфейс Comfy CLI


Всем привет.

Хорошая новость - существует кросс-платформенный интерфейс управления ComfyUI в режиме командной строки Comfy, т.е. CLI.

Для обычного пользователя ComfyUI он может быть и не нужен, но это пока. Пока пользователь справляется со своими эмоциями от паутинок(workflow) ComfyUI мы попробуем ComfyUI CLI. Поскольку ниже я пересказываю примеры одного гуру (источник), то все примеры кода и его расположения выбраны им, хотя как по мне, он слишком глубоко копнул эту тему. Фанат одним словом.

Ok, тогда пойдем дальше. Все примеры ниже приведены исходя из того, что Python находится по пути "c:\p311" (версия 3.11), а устанавливать Comfy мы будем в папку "d:\3".

Для начала создадим виртуальное окружение Python-а "venv" (замечание: обычно ComfyUI из коробки не использует модуль venv, но работать с ним может):

    c:\p311\python -m venv d:\3\venv

Если мы все правильно сделали, то у нас по адресу "d:\3"появится папка "venv". Запомним, что вызывать Python из этой установки нам надо командой:

    d:\3\venv\Scripts\python.exe

и все обращения к Python мы будем производить именно этой командой, с указанием полного пути к нему. Итак, у нас установлен "чистый" Python, т.е. без всяких пакетов. 


Варианты установки Comfy CLI

1. Устанавливаем Comfy CLI как инструмент командной строки для ComfyUI:

    d:\3\venv\Scripts\python -m pip install comfy-cli

Теперь выполним такую команду:

    d:\3\venv\Scripts\Comfy

и получим справку по управлению Comfy из режима командной строки. 

Самое святое это запросить номер версии Comfy CLI:

Tuesday, 27 August 2024

Оптимизация ComfyUI.

Всем привет.

Предлагаемая идея полностью заимствована с ИИ-практикума сайта 3DNews.ru.

Все чаще меня удручает тот факт, что имеющаяся в моем распоряжении видавшая виды GTX 1080 чудовищно медленно обрабатывает workflow с SD3M/SDXL/Flux моделями - генерация картинки идёт со скоростью до 30 секунд на каждую итерацию, и, если учесть, что параметр «Steps» в пробном workflow установлен в значение «22», времени уходит неоправданно много.

Поэтому проведём небольшую оптимизацию ComfyUI - воспользуемся Python-модулем venv (virtual environments, очень полезная вещь между прочим), призванным, в частности, ускорять работу генеративных ИИ-моделей. В комплект поставки портативной версии ComfyUI он не входит, однако есть множество способов его установки, которые в итоге сводятся к развёртыванию полноценного окружения Python на локальном ПК - и активации необходимого модуля уже из этого окружения.

Среди истинных фанатов генеративного ИИ давно водится за правило иметь у себя несколько популярных генераторов как то AUTOMATIC1111, Forge, Fooocus и ComfyUI.

В этом случае для нас всё значительно проще: модуль venv уже развёрнут в AUTOMATIC1111, и всё, что требуется сделать для активации его при запуске рабочей среды ComfyUI, - это должным образом произвести его вызов. 

Скопируем наш run_nvidia_gpu.bat в новый, с именем, допустим, run_with_venv.bat. Исходный файл запуска весьма лаконичен — он просто вызывает портативно развёрнутую копию Python с параметром --windows-standalone-build:

.\python_embeded\python.exe -s ComfyUI\main.py --windows-standalone-build

pause

Sunday, 18 August 2024

About ComfyUI API.

Hi all.

In today’s digital landscape, the ability to connect and communicate seamlessly between  applications and AI models has become increasingly valuable. Comfy  UI offers a  user-friendly interface that enables the creation of  API surfers, facilitating the interaction with other  applications and AI models to generate images or videos. While this process may initially seem daunting, it is relatively straightforward with a basic understanding of programming skills. In this blog post, we will explore the steps involved in setting up an API surfer using Comfy UI and delve into the potential it holds for expanding your creative possibilities. By the way, Stability Matrix uses ComfyUI as a backend system!


Enabling Developer Mode and Saving API Format

To begin creating your  API surfer, you will need to install the Comfy  UI manager. Once installed, access the settings menu by clicking on the gear icon. Within the settings, enable the developer mode option. This enables the functionality to save your  workflows as  API formats. By saving your  workflow diagrams in this format, Comfy UI can run them from the backend of the surfer, allowing for seamless integration with other applications.


Comfy UI as a Web Server

Comfy UI acts as a web server, providing a platform to utilize its features. Upon starting Comfy UI, various command prompts and files are loaded, configuring your system and installing custom notes. The web interface is accessed through a localhost link, enabling users to interact with Comfy  UI via their web browsers. As we proceed, we will connect and utilize the provided ComfyUI script examples:

Directory of D:\ComfyUI\script_examples

basic_api_example.py

websockets_api_example.py

More scripts about ComfyUI API you can take from here https://github.com/yushan777?tab=repositories

If you will use API via websocket so you have to install websocket-client  from https://github.com/websocket-client/websocket-client before.

Wednesday, 3 January 2024

Krita та А1111.


Всім привіт.

Я тут подумав що Krita повинен мати плагін і до популярного А1111. Ну не може того бути щоб до ComfyUI такий плагін був, а до А1111 не було.

Авжеж є і такий, і він має досить розвинутий, як на мене, інтерфейс, тобто має в Dockers самого Krita аж 6 закладок txt2img, img2img, inpaint, upscale та дві з налаштуваннями. Це навіть схоже на клонування частини інтерфейсу самого А1111 яка перенеcена в Krita.



Sunday, 12 November 2023

Расширения для face swap в Automatic1111.

Всем привет.

Для выполнения операции по замене лиц (face swap) в Automatic1111 популярными плагинами на сегодня являются три:

  1. ROOP
  2. FaceSwapLab
  3. ReActor.

ROOP был пионером, но автор его развитие забросил, FaceSwapLab очень функционален, а ReActor молод, развивается и весьма прост в общении.

А теперь про детали. 

Говорить что кто-то из них лучше или хуже можно только в плане интерфейса для пользователя ибо для обнаружения лиц они все используют одну и ту же библиотеку inswapper_128.onnx.

Сегодня на слуху у всех ReActor. Ну что ж, ReActor устанавливается аналогично Roop и FaceSwapLab:

git clone https://github.com/Gourieff/sd-webui-reactor

или штатно из Automatic1111. После настоятельно рекомендую перегрузить сервер Automatic1111, а не просто его GUI.

При первой загрузке ReActor может написать нам что-то врoде "RELOAD SERVER...", но тем менее будет загружаться дальше и даже откроет GUI Automatic1111. Сами понимаете что нормально работать ReActor после этого точно не будет. Хотя автор ReActor-а и утверждает что ReActor все ему необходимое доинсталлирует сам, на практике этого не происходит.

Дело в том что если мы ранее использовали что-то на тему faceswap в Automatic1111 (а мы активно пользуемся расширениями RООР и FaceSwapLab), то ReActor требует onnxruntime библиотеку версии 1.14.0 и выше. Вполне вероятно что наша версия ниже.

Поэтому активируем venv и деинсталлируем ее:

..\python\python.exe -m pip uninstall -y onnxruntime onnxruntime-gpu

После опять запускаем Automatic1111 в процессе которого ReActor (или FaceSwapLab) доинсталлирует более свежую версию onnxruntime.

Friday, 22 September 2023

Automatic1111, подскажи мне идею!

Всем привет.

Есть несколько спобосов автоматизировать варианты промптов в Automatic1111. Не утверждаю что они лучшие, но они работают. 

Итак мои варианты:

1. Используем script prompt matrix. Задаем через символ "|" что надо перебирать в нашем промпте young woman in city park | evening | summer.

Можно использовать как в  Positive так и в  Negative. Legend есть.


2. Используем script: X/Y/Z Plot. Выбирам Prompt S/R. Варианты промпта пишем в X values через запятую. Legend есть. Перебрать можно кучу предопределенных других параметров параллельно с промпт.


3. Используем script: Prompts from file or textbox. Промт пишем полностью в List of prompts input or from file или указываем путь к файлу с промптом.


4. Используем Extensions: Style Pile. Перечень токенов пишем в Sequential prompts [X]

Тогда в Basic prompts ссылка будет фигурировать как: [X] art of cat.

Можно пересечь второй партией токенов в SubSequential prompts [Y]

Тогда Basic prompts уже будет выглядеть как  [X] art of cat in [Y] style.

Tuesday, 19 September 2023

Анимация в Automatic1111.

Всем привет.

Учитывая популярность Automatic1111 по генерации не только картинок, но и анимации, особенно Shorts, я решил сделать справку по инструментам которые позволяют создать анимацию (короткое видео) в первом приближении не выходя из А1111.

Отдельно замечу что во всех случаях следует также использовать мега-расширеие ControlNet (OpenPose, Canny, Depth, Tile, TemporalNet на выбор) для стилизации будущего видео в одном ключе.

Ок, для генерации анимации в Automatic1111 можно использовать скрипты (Scripts):

1) Loopback Wave V1.4.1:

подготовка секвенции и ключевых кадров из начального кадра(опорного кадра) для последующей сборки в ffmpeg. Промпт можно изменять между кадрами. Сборку финального видео лучше проводить вручную.

2) (Beta) Multi-frame Video rendering - V0.72:

подготовка секвенции и ключевых кадров из исходной секвенции(опорной секвенции) для последующей сборки в ffmpeg. Промпт один для всех кадров.

Также для генерации анимации в Automatic1111 можно использовать расширения (Extensions):

3) SD-CN-Animation:

подготовка секвенции и ключевых кадров из начального кадра(опорного кадра) для последующей сборки в ffmpeg. Промпт можно изменять между кадрами. Но мне не понравилось качество генерации кадров.

4) AnimateDiff:

подготовка секвенции и ключевых кадров из начального кадра(опорного кадра) для последующей сборки GIF. Не оцениваю так как не пробовал.

5) TemporalKit:

подготовка секвенции и ключевых кадров из исходного видео для последующей сборки в EBSynth утилите. Увы, в Automatic1111 версии 1.6.0 не работает, вернее работает но без ключей.

6) EBSynth:

подготовка секвенции и ключевых кадров из исходного видео для последующей сборки в EBSynth утилите. Может работать с маской. В принципе расширение больше похоже на органайзер где больше указано что следует сделать вручную на той или иной стадии процесса, всего из 8, и только три из них автоматизированы.

7) Deforum:

подготовка секвенции и ключевых кадров из исходного видео (или опорного кадра) для последующей сборки. Промпт можно изменять между кадрами. Можно использовать выборку опорных кадров. Можно менять тучу настроек влияющих на процесс.Все логично в нем хотя и сложно на первый взгляд. Работает по принципу "запустил и забыл". Заслуживает отдельного поста. Надеюсь что проект не закинут.

На сегодня все, удачи всем.




Wednesday, 30 August 2023

ROOP и ComfyUI.

Всем привет.

Существует определенная проблемка с популярным расширением ROOP как для A1111 так и для ComfyUI. Особенности его установки заключаются в том что оно требует предварительной, хотя и одноразовой, компиляции своих пакетов с MS VС++. Не могу сказать почему автор не задейстовал его с МS VC++ Redistributable, но реальность такова что для его нормальной работы необходимо доустанавливать как минимум Visual Studio Build Tools.

Вот один любитель Stable Diffusion посвятил этому отдельное видео.


В принципе эти проблемы из-за пакета insightface, который даже можно доинсталировать вручную, как советует автор ролика, но и это не решает проблему которая обычно выглядит вот так:

### ComfyUI-FaceSwap: Check basic models

Traceback (most recent call last):

  File "C:\SDComfyUI\ComfyUI\nodes.py", line 1693, in load_custom_node module_spec.loader.exec_module(module)

  File "<frozen importlib._bootstrap_external>", line 883, in exec_module

  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed

  File "C:\SDComfyUI\ComfyUI\custom_nodes\ComfyUI-FaceSwap\__init__.py", line 4, in <module>     from .FaceSwapNode import FaceSwapNode

  File "C:\SDComfyUI\ComfyUI\custom_nodes\ComfyUI-FaceSwap\FaceSwapNode.py", line 1, in <module>  import insightface

  File "C:\SDComfyUI\python_embeded\lib\site-packages\insightface\__init__.py", line 18, in <module> from . import app

  File "C:\SDComfyUI\python_embeded\lib\site-packages\insightface\app\__init__.py", line 2, in <module> from .mask_renderer import *

  File "C:\SDComfyUI\python_embeded\lib\site-packages\insightface\app\mask_renderer.py", line 8, in <module> from ..thirdparty import face3d

  File "C:\SDComfyUI\python_embeded\lib\site-packages\insightface\thirdparty\face3d\__init__.py", line 3, in <module> from . import mesh

  File "C:\SDComfyUI\python_embeded\lib\site-packages\insightface\thirdparty\face3d\mesh\__init__.py", line 9, in <module> from .cython import mesh_core_cython

ImportError: DLL load failed while importing mesh_core_cython: The specified module could not be found.

Tuesday, 15 August 2023

Hello Barbie.

Всем привет.

Любители Stable Diffusion быстро сообразили что там где возможна генерация картинок там возможна и  генерация видео. Точнее сказать, анимации.

В принципе Stable Diffusion для анимации не предназначен, но почему бы не сгенерить последовательность похожих кадров (секвенцию), а после склеить их в видеофайл. Логично предположить что чем больше кадры будут похожи друг на друга тем плавнее получится итоговое видео из них.

Из Stable Diffusion расширений которые предназначены для создания анимации мне знакомы несколько: Deforum, SD-CN-Animation и Loopback wave script. Первый довольно новороченый поэтому про него речь поведу в следующий раз. А вот про два других могу сказать пару слов сегодня.

Скажу сразу что от SD-CN-Animation я отказался. В нем по непонятным для меня причинам все оказалось плохо - он конфликтует с ROOP, он умудряется генерить очень плохие картинки на тех же промптах что и другие скрипты. Поэтому я его исключил из дальнейшего обращения  Stable Diffusion. А вот Loopback wave script меня порадовал своей простотой и адекватностью.

Живет он здесь, там же страничка как им пользоваться. Все что касается ffmpeg относится к финальной стадии сборки всех кадров в один видеофайл. Ffmpeg надо будет поставить отдельно. Хотя я вам покажу ниже как его можно использовать самостоятельно и с лучшим качеством.

Итак главное это количество фреймов, чем их больше тем дольше Stable Diffusion в лице А1111 будет трудиться над их созданием. И ...все), шучу - еще надо вписать промпт где первая цифра значит с какого кадра он действует для Stable Diffusion. "Save results as Video" это значит что после генерации А1111 передаст внешнюю команду для ffmpeg на сборку видео с выбраным кодеком.


Wednesday, 2 August 2023

Траблшутинг Stable Diffusion.

Всем привет.

Бывают случаи когда после очередного обновления Stable Diffusion в лице А1111 перестает работать как надо. 

Частенько Extensions для А1111 используют одни и теже библиотеки и плохо делят их между собой. Поэтому для начала попробуйте отключить (удалять не надо) некоторые из своих расширений и перезапустите А1111. У меня так например не сошлись характерами SD-CN-Animation и ROOP.

Если это не помогло тогда можно откатить свой Stable Diffusion до предыдущего релиза. До какого именно, вам надо определиться самим по истории в репозитории А1111 в Git. В принципе вся процедура тривиальна и хорошо знакома знатокам CI/CD.

Для возврата на другую версию Stable Diffusion WebUI, необходимо в папке с Stable Diffusion выполнить команду:

git checkout <номер нужного релиза A1111>

Номер релиза в Git фигурирует как branch number. Как найти нужный есть много мануалов в сети.

Ввести команду можно так:

- если вы в ручную устанавливали Git то у вас в проводнике Windows появились быстрые команды для Git в popup-меню. Правой кнопкой мыши нажмите на папку с вашей Stable Diffusion и выберете в появившемся меню Git Bash Here. После чего откроется окно с командной строкой в которой уже можно вписать или вставить данную команду,

-  можно в проводнике открыть папку с вашей Stable Diffusion. В адресной строке вверху где показывается весь путь к вашей папки с Stable Diffusion, выделить все и на английской раскладке написать cmd  и нажать Enter. Запустится оболочка командной строки куда также можно вставить команду приведенную выше.

Важно - выполнять команду следует именно в папке Stable Diffusion!

После того как команда выполнена, закройте окно командной стоки, удалите папку venv, так как с последним обновлением обновились зависимости и запустите как обычно, с помощью webui-user.bat. Папка venv создастся сама при запуске А1111, нужные зависимости установятся автоматически или подтянутся из кеша, без повторного скачивания.

Никаких правок в webui-user.bat делать не нужно, git pull тоже можно оставить в скрипте. Однако для портабельной версии следует сократить строку git pull origin master до git pull.

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

git checkout master

Успехов.

Wednesday, 26 July 2023

Інструменти для створення prompts.


Всім привіт.

Цей пост містить перелік інструментів, що не належать до IDE, але які можуть бути корисними для підказок(prompts) для ChatGPT і не тільки.

Prompt Development, Testing, and Chaining (розробка підказок, тестування та створення ланцюжків)

LangChain

Великі мовні моделі (LLM) стають трансформаційною технологією, що дозволяє розробникам створювати додатки, які раніше були неможливі. Але використання цих LLM ізольовано часто недостатньо для створення дійсно потужного додатку - справжня сила з'являється, коли ви можете об'єднати їх з іншими джерелами обчислень або знань.

Ця бібліотека спрямована на допомогу у розробці таких типів додатків.

PromptAppGPT

PromptAppGPT - це низькокодовий фреймворк для швидкої розробки додатків на основі підказок. PromptAppGPT містить такі функції, як малокодова розробка на основі підказок, генерація тексту GPT, генерація зображень DALLE, онлайн-редактор підказок +компілятор +виконавець, автоматична генерація користувацького інтерфейсу, підтримка розширень плагінів тощо. PromptAppGPT має на меті уможливити розробку природномовних додатків на основі GPT.

PromptAppGPT забезпечує багатозадачний умовний запуск, перевірку результатів і повторні спроби, що дозволяє автоматизувати завдання ручної генерації, які в іншому випадку вимагали б багато кроків. У той же час, користувачам більше не потрібно запам'ятовувати і вводити нудну мантру підказки самостійно, і вони можуть легко виконувати завдання, вводячи лише основну необхідну інформацію для виконання завдання.

PromptAppGPT значно знижує бар'єр для розробки GPT-додатків, дозволяючи будь-кому розробляти AutoGPT-подібні додатки за допомогою декількох рядків низькорівневого коду.

Prompt-generator-for-ChatGPT

Додаток "Генератор підказок для ChatGPT" - це десктопний інструмент, призначений для допомоги користувачам у створенні специфічних підказок для ChatGPT, моделі чат-бота, розробленої OpenAI.

Monday, 24 July 2023

Создаем голосовой помощник c GPT.

Всем привет.

Мы уже пробовали использовать OpenAI для ответов на вопросы и извлечения текста из речи с помощью Whisper. Что, если мы теперь объединим эти и другие компоненты для создания голосового помощника на основе ИИ?  Т.е. в отличие от предыдущего проекта будем ответы GPT не только читать, но и слушать.

Теперь наша цель – использовать базу знаний GPT, чтобы получить ответы на вопросы, которые мы можем задать. Создадим некое подобие голосового помощника Alexa. Но наш интеллектуальный голосовой помощник сможет ответить на более сложные вопросы и предоставить больше полезной информации.

Наш помощник будет работать по такому алгоритму:

• пользователь задает свой вопрос с помощью микрофона. Мы будем использовать Python SpeechRecognition (https://github.com/Uberi/speech_recognition);

• Whisper автоматически преобразует вопрос в текст;

• текст передается в конечные точки GPT;

• API OpenAI возвращает ответ;

• ответ сохраняется в файле mp3 и передается в Google Text to Speech (gTTS) для создания голосового ответа. Помощник проигрывает нам ответ в виде mp3.


Для голосового помощника на понадобяться три функции:

1. Запрос пользователя и запись его голоса - функция def record_audio для записи звука.

2. Расшифровка аудио з записью голоса пользователя - функция def transcribe_forever, которая использует OpenAI Whisper для расшифровки аудио.

3. Голосовой ответ на запрос пользователя - для ответа на запрос пользователя мы будем использовать функцию def reply дл ягенерации голосового ответа от GPT.

Saturday, 22 July 2023

Invalid arithmetic operator в Zabbix.


Всем привет.

SSL (TLS) сертификаты стали важным компонентом современной инфраструктуры, поэтому администратору нужно следить за тем, чтобы они не истекали и вовремя их обновлять. Удобно отслеживать срок действия SSL сертификатов на ваших сайтах с помощью системы мониторинга Zabbix.

В ранних версиях Zabbix для мониторинга SSL сертификатов приходилось использовать консольные скрипты, которые передают значения в Zabbix через UserParameter. В Zabbix Agent 2 появись возможность получения информации о сертификате с помощью встроенного плагина WebCertificate. 

Вот здесь рассмотрены оба способа мониторинга срока действия SSL.

По второму способу скажу сразу что скрипт автора /usr/lib/zabbix/externalscripts/sslcert_expiration.sh однозначно рабочий:

#!/bin/bash

data=`echo | openssl s_client -servername $1 -connect $1:${2:-443} 2>/dev/null | openssl x509 -noout -enddate | sed -e 's#notAfter=##'`

ssldate=`date -d "${data}" '+%s'`

nowdate=`date '+%s'`

diffdate="$((${ssldate}-${nowdate}))"

echo $((${diffdate}/86400))

Кстати им же можно проверять сертификаты и на сереверах в локальной сети предприятия.

Но есть нюас.) В Linux без них никуда. При его тестировании на моем сервере Zabbix выскочил глюк на определении diffdate, что ему не делал скрипт тут падал в ошибку: «syntax error: invalid arithmetic operator (error token is «.

Решил я прибегнуть к помощи ChatGPT, сейчас это модно. Далее приведу варианты его решения которые он мне предлагал вчера вечером. Показываю только то те строки где он предлагал изменить в исходном коде для устранения ошибки:

1)

data=$(echo | openssl s_client -servername "$1" -connect "$1":${2:-443} 2>/dev/null | openssl x509 -noout -enddate | awk -F '=' '{print $2}')

2)

diffdate=$((`date -d "$ssldate" '+%s'`- `date -d "$nowdate" '+%s'`))

3)

# Using Python to calculate the difference in seconds

diffdate=$(python -c "from datetime import datetime; print(int((datetime.strptime('$data', '%b %d %H:%M:%S %Y %Z') - datetime.now()).total_seconds()))")

4)

# Retrieve the SSL certificate end date

data=$(echo | openssl s_client -servername "$1" -connect "$1":${2:-443} 2>/dev/null | openssl x509 -noout -dates | grep 'notAfter' | cut -d '=' -f 2)

5)

# Calculate the difference in seconds using 'bc' command

diffdate=$(echo "$ssldate - $nowdate" | bc)


Проверка решений своим поиском по Google привела к тем же вариантам, так что ChatGPT не соврал. Но увы, ни один из способов к успеху не привел. Видно хорошо был сформатирован код моего Zabbix appliance.

Надеюсь вам повезет больше. Удачи.

Friday, 21 July 2023

Пробуем DALL·E через API.

Всем привет.

Благодаря современным методам глубокого обучения модель GPT может научиться создавать изображения на основе текстового запроса или сущест- вующего изображения.

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

В целом API изображений предоставляет три способа взаимодействия с конечной точкой images:

• создание изображения с нуля на основе текстовой подсказки;

• внесение изменений в существующее изображение на основе текстового запроса;

• создание различных вариантов существующего исходного изображения.

За последние годы в OpenAI обучили нейронную сеть под названием DALL·E, основанную на GPT-3. DALL·E – это уменьшенная версия GPT-3 с 12 млрд параметров вместо 175 млрд. Она специально разработана для создания изображений из текстовых описаний с использованием набора данных пар текст–изображение вместо очень широкого набора данных, который применяли для обучения GPT-3.

Чтобы увидеть модель в действии, вы можете использовать код для предварительного просмотра результатов работы DALL·E. Но фокус в том что даже для пробы в web-интерфейсе DALL·E вам нужно покупать кредиты, минимум на 15 баксов. Однако через API (ключик у вас уже есть?) будет возможность испытать ее бесплатно. Однако и тут в настоящее время ограничение скорости генерации установлено на уровне 10 изображений в минуту. Уверен что вам хватит!

Sunday, 1 January 2023

Тестирование инфраструктуры c pyATS #3.

Всем привет. 

Продолжаю нашу тему фреймворков для тестирования инфраструктры. Сегодня мой пост является беглым отчетом по выполнению работы "7.6.3 Lab - Automated Testing Using pyATS and Genie" из Cisco DevNet.

Знакомтесь - pyATS (https://developer.cisco.com/pyats/). Это экосистема сквозного тестирования, изначально разработанная компанией Cisco и ставшая открытой в конце 2017 года. Ранее библиотека pyATS называлась Genie; эти названия используются в одном и том же контексте. Ввиду своего происхождения этот фреймворк целиком и полностью ориентирован на тестирование сетей.

Фреймворк доступен в PyPI:

(venv) $ pip install pyats[full]

Для начала рассмотрим некоторые демонстрационные сценарии из GitHub-репозитория:

git clone https://github.com/CiscoTestAutomation/examples

Мы сходу можем прогнать тест-пустышку чтобы оценить как все происходит:

pyats run job examples/basic/basic_example_job.py

Следом можно охватить отчетность по всем проведенным PyATS-тестам в формате HTML:

pyats logs view

P.S.: имейте ввиду - порт web-сервера отчетов динамический.


Ок, реальные тесты начинаются с создания файла испытательной модели (testbed) в формате YAML. Создадим простой testbed-файл testbed-pyats.yml для нашего устройства CSR1000v. Он похож на файл реестра hosts, знакомый нам от Ansible:

testbed: 

    name: pyATS

    credentials:

        default:

            username: admin

            password: super

        enable:

            password: super


devices:

    CSR: 

        alias: CSR

        type: iosxe

        connections:

            defaults:

                class: unicon.Unicon  

            vty:

                ip: 192.168.1.19

                protocol: ssh -o KexAlgorithms=diffie-hellman-group14-sha1

Версия на печать

Популярное