Полное развертывание онлайн-сервиса модели Stable Diffusion за 20 минут

Каталог статей

Искусственный интеллект AIGC

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

Технологии, связанные с AIGC, могут в полной мере использовать свои технические преимущества с точки зрения творчества, выразительности, итерации, распространения и персонализации для создания новых форм создания и взаимодействия цифрового контента. За последние два года AIGC продолжала блистать в рисовании ИИ, композиции ИИ, поэзии ИИ, письме ИИ, создании видео ИИ, синтезе речи ИИ и других областях; особенно рисование ИИ, которое недавно стало популярным во всем Интернете. , как пользователи, мы Пока вы просто вводите несколько ключевых слов, картина будет рождена в течение нескольких секунд.

0-1
Рисование с помощью ИИ значительно повысило производительность отрасли: изображение, сгенерированное текстом (рисование с помощью ИИ), — это новый метод производства, при котором изображения создаются на основе текста. Преимущества легкого массового производства.

В последнее время продукты для рисования с использованием ИИ от различных крупных производителей также были выпущены один за другим.Для отдельных пользователей и разработчиков, которые хотели бы попробовать первых пользователей, два наиболее полезных продукта для рисования с использованием ИИ — это Midjourney и Stable Diffusion; Midjourney — это коммерческий инструмент для рисования с использованием ИИ. с помощью сервисной платформы Discord он быстро популяризируется, пользуется спросом и любовью многих пользователей; в то время как Stable Diffusion выбрал путь открытого исходного кода, и в некоторых отношениях его потенциал привлечения сравним с потенциалом Midjourney, и его поддерживает большинство энтузиастов с открытым исходным кодом.

В настоящее время stable-diffusion-webui стал самым горячим кодом развертывания Stable Diffusion на GitHub, Пока есть хост или сервер с видеокартой (чем больше память, тем быстрее вывод изображения), код может работать отлично. , и вы можете настроить его в соответствии со своими предпочтениями, чтобы комбинировать различные интересные визуальные модели.

Но для более индивидуальных пользователей серверный компьютер с видеокартой стал основным узким местом, не позволяющим развернуть персональную Stable Diffusion.Есть ли у наших рядовых предпринимателей и разработчиков возможность обучаться и развертывать AIGC в той области, в отношении которой мы с оптимизмом смотрим? для модели ответ положительный.В нынешнюю эпоху облачных сервисов у каждого есть возможность стать исследователем передовых технологий. Недавно меня пригласила Amazon Cloud Technology для проведения технической практики на платформе Amazon SageMaker.До этого я страдал от нехватки подходящих GPU-серверов и было сложно быстро развернуть собственный Stable Diffusion.Эта проблема исчезла после встречи Amazon SageMaker.

Несколько дней назад мой старый одноклассник из Шанхая сказал мне, что китайский саммит Amazon Cloud Technology пройдет в шанхайском всемирном выставочном центре 27–28 июня 2023 года, и спросил, не заинтересован ли я в совместном участии. Жаль, что моего ежегодного отпуска недостаточно. Друзья, которые заинтересованы и квалифицированы, могут рассмотреть возможность участия. Эта возможность выиграна с трудом: столкнувшись с различными глобальными инновациями в области цифровых технологий, в эту лучшую эпоху, это также самая сложная В эту эпоху , мы должны участвовать в деятельности некоторых крупных международных компаний, чтобы мы могли непосредственно испытать исключительный опыт облачных технологий, принесенный нам полномасштабным взрывом новых технологий, новых тенденций и новых возможностей. Друзья Sheniu также могут воспользоваться возможностью правильно подружиться с большими парнями в кругу, и пространство для стажировки и выбора работы будет расширено.

Использование платформы Amazon SageMaker для быстрого завершения онлайн-развертывания службы рассуждений моделей AIGC принесло мне много вдохновения и сюрпризов.Оказалось, что развертывание рассуждений моделей ИИ в облаке может быть таким простым, элегантным и плавным. Во время этой технологической практики AIGC я также получил много полезных знаний и навыков.Следующая запись в блоге расскажет всем о развертывании веб-сервисов модели AIGC (Stable Diffusion 2.0), чтобы узнать, как развертывать их в облаке.Реализованная модель искусственного интеллекта услуга.

Полное развертывание онлайн-сервиса модели Stable Diffusion за 20 минут

Встречайте Amazon SageMaker

Amazon SageMaker— это полностью управляемая служба машинного обучения: благодаря возможностям SageMaker ученые и разработчики данных могут быстро и легко создавать и обучать модели машинного обучения, а затем развертывать их непосредственно в готовых к эксплуатации средах размещения. SageMaker охватывает весь рабочий процесс машинного обучения, включая маркировку и подготовку данных, выбор алгоритмов, обучение моделей, настройку и оптимизацию моделей для развертывания, прогнозирование и выполнение операций.

После более чем недели обучения и практического опыта я обнаружил, что эта платформа — просто сервисный инструмент ИИ, предназначенный для нас, предпринимателей и индивидуальных разработчиков.许多AI工程项目,我们只需去构造好自己的训练集和测试集,其余的模型训练、推理、部署,Amazon SageMaker 都能够帮我们轻松完成。

Stable Diffusion 2.0, опубликованный в этом сообщении в блоге со ссылкой на официальную техническую документацию, занял всего около 20 минут, и я успешно создал набор гладких онлайн-сервисов для рисования ИИ на Amazon SageMaker.Далее давайте разберемся вместе.

Создание среды и вывод модели с помощью Amazon SageMaker

1. Создайте операционную среду для ноутбука Jupyter.

在搜索框中搜索 SageMaker ,如下图所示

1-0

这里我们创建一个笔记本编程实例

1-1

我这里选择的配置如下:

1-2

选择角色,其他的默认即可

1-4

大概5分钟左右,实例就创建成功啦

1-5

上传刚刚下载的代码

1-5

直接打开这个代码

1-6

选择合适的conda环境

1-7

2. Запускайте все коды одним щелчком мыши

这里我们直接一键运行运行所有代码即可,代码执行过程中会依次完成 Stable Diffusion 模型相关类和函数的代码定义、推理测试,并打包代码和模型,然后部署模型至Sagemaker 推理终端节点 (PS:这里的所有代码运行完毕大概需要5到10分钟左右)

1-8

Анализ кода ключа выглядит следующим образом

1. Подготовка среды, загрузка модели кода

检查当前 pyTorch 版本

!nvcc --version
!pip list | grep torch

安装 Stable Diffusion 代码运行额外需要的依赖库,这网速飞快

!sudo yum -y install pigz
!pip install -U pip
!pip install -U transformers==4.26.1 diffusers==0.13.1 ftfy accelerate
!pip install -U torch==1.13.1+cu117 -f https://download.pytorch.org/whl/torch_stable.html
!pip install -U sagemaker
!pip list | grep torch

下载代码和模型文件,这里直接下载Hugging Face提供的代码和模型即可

1-10

2. Настройте и используйте модель в Notebook.

直接调用 函数进行模型加载

import torch
import datetime
from diffusers import StableDiffusionPipeline
# Load stable diffusion 
pipe = StableDiffusionPipeline.from_pretrained(SD_MODEL, torch_dtype=torch.float16)

在 Cuda 上进行模型的推理,这里 Stable Diffusion V2 能够支持生成的最大图像尺寸为 768 * 768

# move Model to the GPU
torch.cuda.empty_cache()
pipe = pipe.to("cuda")

# V1 Max-H:512,Max-W:512
# V2 Max-H:768,Max-W:768

print(datetime.datetime.now())
prompts =[
    "Eiffel tower landing on the Mars",
    "a photograph of an astronaut riding a horse,van Gogh style",
]
generated_images = pipe(
    prompt=prompts,
    height=512,
    width=512,
    num_images_per_prompt=1
).images  # image here is in [PIL format](https://pillow.readthedocs.io/en/stable/)

print(f"Prompts: {prompts}\n")
print(datetime.datetime.now())

for image in generated_images:
    display(image)

友情提示 :如果报错,遇到推理时 GPU 内存不够,则可以尝试以下三种方式进行解决

  1. Попробуйте создать изображение с меньшим разрешением
  2. Уменьшите количество сгенерированных изображений
  3. Обновите модель и выберите более мощный GPU-сервер

3. Разверните модель на узле терминала вывода Sagemaker.

我们这里直接使用 AWS 的 SageMaker Python 开发工具包部署模型刚刚已经验证能够运行成功的模型和打包好的代码。

  • Напишите инициализированный код Sagemaker для развертывания конечной точки вывода.
import sagemaker
import boto3

'''
# 创建 Session
'''
sess = sagemaker.Session()
# sagemaker session bucket -> used for uploading data, models and logs
# sagemaker will automatically create this bucket if it not exists
sagemaker_session_bucket=None

if sagemaker_session_bucket is None and sess is not None:
    # set to default bucket if a bucket name is not given
    sagemaker_session_bucket = sess.default_bucket()

try:
    role = sagemaker.get_execution_role()
except ValueError:
    iam = boto3.client('iam')
    role = iam.get_role(RoleName='sagemaker_execution_role')['Role']['Arn']

sess = sagemaker.Session(default_bucket=sagemaker_session_bucket)

print(f"sagemaker role arn: {
      
      role}")
print(f"sagemaker bucket: {
      
      sess.default_bucket()}")
print(f"sagemaker session region: {
      
      sess.boto_region_name}")
  • Создайте скрипт inference.py для загрузки и анализа модели.
%%writefile ./$SD_MODEL/code/inference.py
import base64
import torch
from io import BytesIO
from diffusers import StableDiffusionPipeline

'''
# 加载模型到CUDA
'''
def model_fn(model_dir):
    # Load stable diffusion and move it to the GPU
    pipe = StableDiffusionPipeline.from_pretrained(model_dir, torch_dtype=torch.float16)
    pipe = pipe.to("cuda")

    return pipe

'''
# 推理方法
'''
def predict_fn(data, pipe):

    # 解析参数 get prompt & parameters
    prompt = data.pop("prompt", "")
    # set valid HP for stable diffusion
    height = data.pop("height", 512)
    width = data.pop("width", 512)
    num_inference_steps = data.pop("num_inference_steps", 50)
    guidance_scale = data.pop("guidance_scale", 7.5)
    num_images_per_prompt = data.pop("num_images_per_prompt", 1)
    # 传入参数,调用推理 run generation with parameters
    generated_images = pipe(
        prompt=prompt,
        height=height,
        width=width,
        num_inference_steps=num_inference_steps,
        guidance_scale=guidance_scale,
        num_images_per_prompt=num_images_per_prompt,
    )["images"]

    # create response
    encoded_images = []
    for image in generated_images:
        buffered = BytesIO()
        image.save(buffered, format="JPEG")
        encoded_images.append(base64.b64encode(buffered.getvalue()).decode())

    # create response
    return {
    
    "generated_images": encoded_images}

Создавайте интерфейсные и серверные веб-приложения в Amazon Cloud9

AWS Cloud9 — это облачная интегрированная среда разработки (IDE), для написания, запуска и отладки кода которой требуется только браузер. Включает в себя редактор кода, отладчик и терминал, а также поставляется с предварительно упакованными необходимыми инструментами для распространенных языков программирования, таких как JavaScript, Python, PHP, и запускает новые проекты без установки файлов или настройки компьютера для разработки.

1. Создайте экземпляр облачной службы и установите его в веб-среде.

这里我试用了 Cloud9 云服务,在查找服务处搜索 Cloud9,并点击进入Cloud9服务面板即可

2-1

点击创建环境

2-2

我这里的设置如下

2-3

其他部分配置保持默认,在页面底部点击橙色的 Create 按钮创建环境。 环境的创建将花费1-2分钟的时间。

2-4

创建成功之后,点击 open 进入服务控制台

2-5

粘贴左侧的代码,复制到控制台bash窗口进行运行,会自动下载和解压代码

cd ~/environment
wget https://static.us-east-1.prod.workshops.aws/public/73ea3a9f-37c8-4d01-ae4e-07cf6313adac/static/code/SampleWebApp.zip
unzip SampleWebApp.zip

#  在 AWS Cloud9 上安装 Flask 和 boto3
pip3 install Flask

pip3 install boto3

2-6

2. Запустите и запустите веб-службу, введите параметры изображения и слова подсказки, которые вы хотите сгенерировать, и вызовите службу логического вывода.

依赖的环境安装好之后,就可以运行这个服务代码

2-7

服务启动成功之后,访问 127.0.0.1:8080 即可访问本地服务;设定 width 和 Length 参数,以及想要生成的图片描述,然后点击提交

2-8

等待 几秒钟之后,就得到了上面输入的两个 提示词对应生成的图像,看得出来效果还是非常不错的;

  • После тестирования обнаружено, что даже если ввод подсказки каждый раз один и тот же, вывод, генерируемый моделью, не является фиксированным.
  • Чем точнее будут введены подсказки, тем проще и лучше будет созданный эффект изображения.
  • На основе сервисной платформы Amazon SageMaker можно очень быстро (менее чем за полчаса после овладения) создать набор онлайн-вызовов для рассуждений модели ИИ на стороне Интернета.

2-9

3. Пример генерации текстового изображения

Стабильная диффузия предъявляет очень высокие требования к словам-подсказкам: чем подробнее вводимые слова-подсказки, тем лучше их понимает модель, и чем ближе сгенерированное изображение будет к ожидаемому, тем лучше будет сгенерированное качество;


这里提供3组文本图像生成的示例,方便各位同学参考:

подсказка Пример создания изображения 1 Пример создания изображения 2
A rabbit is piloting a spaceship 5-0 5-1
Driverless car speeds through the desert 12 долларов -----
A small cabin on top of a snowy mountain in the style of Disney, artstation 1 доллар -----

Краткий обзор опыта использования облачных сервисов Amazon

Благодаря быстрому просмотру официального руководства развертывание облачного сервиса проекта Stable Diffusion 2.0 было успешно завершено за 20 минут, что позволило мне еще больше осознать мощь AWS (Amazon Web Services):

  1. Масштабируемость: AWS позволяет пользователям легко расширять серверные ресурсы в соответствии с потребностями бизнеса, что может помочь клиентам сократить расходы и повысить эффективность;
  2. Надежность: AWS имеет постоянно ведущую инфраструктуру облачных сервисов с высоконадежной распределенной архитектурой, которая может предоставлять стабильные и надежные услуги в глобальном масштабе бизнеса;
  3. Безопасность: AWS предоставляет различные функции и инструменты безопасности, помогающие пользователям эффективно защищать данные и приложения;
  4. Гибкость: AWS предоставляет множество сервисов и функций, которые можно настроить в соответствии с конкретными потребностями пользователей;
  5. Надежность: AWS заработала хороший корпоративный имидж и репутацию сервиса в отрасли и уже стала лучшим выбором для облачной трансформации миллионов предприятий и отдельных клиентов по всему миру.

AWS 相比其他云服务厂商,还具备以下优点:

  1. Amazon Cloud Technology предоставляет AWS облачную платформу с обширным глобальным охватом и широким спектром услуг, а также доступно более 200 полнофункциональных услуг;
  2. Предоставляет набор продуктивных приложений с оплатой по мере использования, созданных на основе AWS, которые позволяют пользователям группы быстро, безопасно и экономично проверять статус проекта, совместно работать над контентом и общаться в режиме реального времени;
  3. Предоставление самых широких и глубоких услуг машинного обучения, поддерживающих облачную инфраструктуру и всесторонне проверенные модели алгоритмов, чтобы каждый разработчик, специалист по данным и эксперт-практик мог использовать технологию машинного обучения для эффективного внедрения и развертывания услуг ИИ;
  4. Предоставлять полный набор онлайн-инструментов разработки, пользователи могут быстрее и эффективнее размещать код, а также создавать, тестировать и развертывать приложения;

Все передовые технологии ждут, чтобы все вместе изучили их

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

通过使用 亚马逊 SageMaker 服务平台,我们只需要一个浏览器,即可编写、运行和调试各种代码,无需进行复杂的机器适配和环境搭建,能够快速完成AI模型的推理、测试、验证部署工作。

Если вы также хотите испытать новейшие и самые популярные инструменты и услуги для разработчиков облачных технологий Amazon, просто нажмите на ссылку ниже, чтобы изучить и попрактиковаться в более интересных технологиях искусственного интеллекта с инженерами команды Amazon по облачным технологиям. , AI Dream Chaser

亚马逊云科技中国峰会即将举办,有兴趣的同学可以尽早关注,报名参加,和 Amazon 一起探索前沿科技

9-6

Supongo que te gusta

Origin blog.csdn.net/sinat_28442665/article/details/131116898
Recomendado
Clasificación