未验证 提交 52766374 编写于 作者: C chenjian 提交者: GitHub

add hub serving for text-to-image modules

上级 5da7318d
......@@ -103,7 +103,47 @@ disco_diffusion_clip_rn101 是一个文图生成模型,可以通过输入一
- **返回**
- ra(DocumentArray): DocumentArray对象, 包含`n_batches`个Documents,其中每个Document都保存了迭代过程的所有中间结果。详细可参考[DocumentArray使用文档](https://docarray.jina.ai/fundamentals/documentarray/index.html)。
## 四、更新历史
## 四、服务部署
- PaddleHub Serving可以部署一个在线文图生成服务。
- ### 第一步:启动PaddleHub Serving
- 运行启动命令:
- ```shell
$ hub serving start -m disco_diffusion_clip_rn101
```
- 这样就完成了一个文图生成的在线服务API的部署,默认端口号为8866。
- **NOTE:** 如使用GPU预测,则需要在启动服务之前,请设置CUDA\_VISIBLE\_DEVICES环境变量,否则不用设置。
- ### 第二步:发送预测请求
- 配置好服务端,以下数行代码即可实现发送预测请求,获取预测结果,返回的预测结果在反序列化后即是上述接口声明中说明的DocumentArray类型,返回后对结果的操作方式和使用generate_image接口完全相同。
- ```python
import requests
import json
import cv2
import base64
from docarray import DocumentArray
# 发送HTTP请求
data = {'text_prompts': 'in the morning light,Overlooking TOKYO city by greg rutkowski and thomas kinkade,Trending on artstation.'}
headers = {"Content-type": "application/json"}
url = "http://127.0.0.1:8866/predict/disco_diffusion_clip_rn101"
r = requests.post(url=url, headers=headers, data=json.dumps(data))
# 获取返回结果
da = DocumentArray.from_base64(r.json()["results"])
# 手动将最终生成的图像保存到指定路径
da[0].save_uri_to_file('disco_diffusion_clip_rn101_out-result.png')
# 将生成过程保存为一个动态图gif
da[0].chunks.save_gif('disco_diffusion_clip_rn101_out-result.gif')
## 五、更新历史
* 1.0.0
......
......@@ -174,10 +174,7 @@ class DiscoDiffusionClip:
"""
Run as a service.
"""
results = []
for text_prompt in text_prompts:
result = self.generate_image(text_prompts=text_prompt, **kwargs)[0].to_base64()
results.append(result)
results = self.generate_image(text_prompts=text_prompts, **kwargs).to_base64()
return results
@runnable
......
......@@ -103,7 +103,46 @@ disco_diffusion_clip_rn50 是一个文图生成模型,可以通过输入一段
- **返回**
- ra(DocumentArray): DocumentArray对象, 包含`n_batches`个Documents,其中每个Document都保存了迭代过程的所有中间结果。详细可参考[DocumentArray使用文档](https://docarray.jina.ai/fundamentals/documentarray/index.html)。
## 四、更新历史
## 四、服务部署
- PaddleHub Serving可以部署一个在线文图生成服务。
- ### 第一步:启动PaddleHub Serving
- 运行启动命令:
- ```shell
$ hub serving start -m disco_diffusion_clip_rn50
```
- 这样就完成了一个文图生成的在线服务API的部署,默认端口号为8866。
- **NOTE:** 如使用GPU预测,则需要在启动服务之前,请设置CUDA\_VISIBLE\_DEVICES环境变量,否则不用设置。
- ### 第二步:发送预测请求
- 配置好服务端,以下数行代码即可实现发送预测请求,获取预测结果,返回的预测结果在反序列化后即是上述接口声明中说明的DocumentArray类型,返回后对结果的操作方式和使用generate_image接口完全相同。
- ```python
import requests
import json
import cv2
import base64
from docarray import DocumentArray
# 发送HTTP请求
data = {'text_prompts': 'in the morning light,Overlooking TOKYO city by greg rutkowski and thomas kinkade,Trending on artstation.'}
headers = {"Content-type": "application/json"}
url = "http://127.0.0.1:8866/predict/disco_diffusion_clip_rn50"
r = requests.post(url=url, headers=headers, data=json.dumps(data))
# 获取返回结果
da = DocumentArray.from_base64(r.json()["results"])
# 手动将最终生成的图像保存到指定路径
da[0].save_uri_to_file('disco_diffusion_clip_rn50_out-result.png')
# 将生成过程保存为一个动态图gif
da[0].chunks.save_gif('disco_diffusion_clip_rn50_out-result.gif')
## 五、更新历史
* 1.0.0
......
......@@ -174,10 +174,7 @@ class DiscoDiffusionClip:
"""
Run as a service.
"""
results = []
for text_prompt in text_prompts:
result = self.generate_image(text_prompts=text_prompt, **kwargs)[0].to_base64()
results.append(result)
results = self.generate_image(text_prompts=text_prompts, **kwargs).to_base64()
return results
@runnable
......
......@@ -103,7 +103,47 @@ disco_diffusion_clip_vitb32 是一个文图生成模型,可以通过输入一
- **返回**
- ra(DocumentArray): DocumentArray对象, 包含`n_batches`个Documents,其中每个Document都保存了迭代过程的所有中间结果。详细可参考[DocumentArray使用文档](https://docarray.jina.ai/fundamentals/documentarray/index.html)。
## 四、更新历史
## 四、服务部署
- PaddleHub Serving可以部署一个在线文图生成服务。
- ### 第一步:启动PaddleHub Serving
- 运行启动命令:
- ```shell
$ hub serving start -m disco_diffusion_clip_vitb32
```
- 这样就完成了一个文图生成的在线服务API的部署,默认端口号为8866。
- **NOTE:** 如使用GPU预测,则需要在启动服务之前,请设置CUDA\_VISIBLE\_DEVICES环境变量,否则不用设置。
- ### 第二步:发送预测请求
- 配置好服务端,以下数行代码即可实现发送预测请求,获取预测结果,返回的预测结果在反序列化后即是上述接口声明中说明的DocumentArray类型,返回后对结果的操作方式和使用generate_image接口完全相同。
- ```python
import requests
import json
import cv2
import base64
from docarray import DocumentArray
# 发送HTTP请求
data = {'text_prompts': 'in the morning light,Overlooking TOKYO city by greg rutkowski and thomas kinkade,Trending on artstation.'}
headers = {"Content-type": "application/json"}
url = "http://127.0.0.1:8866/predict/disco_diffusion_clip_vitb32"
r = requests.post(url=url, headers=headers, data=json.dumps(data))
# 获取返回结果
da = DocumentArray.from_base64(r.json()["results"])
# 手动将最终生成的图像保存到指定路径
da[0].save_uri_to_file('disco_diffusion_clip_vitb32_out-result.png')
# 将生成过程保存为一个动态图gif
da[0].chunks.save_gif('disco_diffusion_clip_vitb32_out-result.gif')
## 五、更新历史
* 1.0.0
......
......@@ -19,12 +19,12 @@ from functools import partial
from typing import List
from typing import Optional
import disco_diffusion_clip_vitb32.clip as clip
import disco_diffusion_clip_vitb32.resize_right as resize_right
import paddle
from disco_diffusion_clip_vitb32.reverse_diffusion import create
import disco_diffusion_clip_vitb32.clip as clip
import disco_diffusion_clip_vitb32.resize_right as resize_right
import paddlehub as hub
from disco_diffusion_clip_vitb32.reverse_diffusion import create
from paddlehub.module.module import moduleinfo
from paddlehub.module.module import runnable
from paddlehub.module.module import serving
......@@ -174,10 +174,7 @@ class DiscoDiffusionClip:
"""
Run as a service.
"""
results = []
for text_prompt in text_prompts:
result = self.generate_image(text_prompts=text_prompt, **kwargs)[0].to_base64()
results.append(result)
results = self.generate_image(text_prompts=text_prompts, **kwargs).to_base64()
return results
@runnable
......
......@@ -103,7 +103,47 @@ disco_diffusion_cnclip_vitb16 是一个文图生成模型,可以通过输入
- **返回**
- ra(DocumentArray): DocumentArray对象, 包含`n_batches`个Documents,其中每个Document都保存了迭代过程的所有中间结果。详细可参考[DocumentArray使用文档](https://docarray.jina.ai/fundamentals/documentarray/index.html)。
## 四、更新历史
## 四、服务部署
- PaddleHub Serving可以部署一个在线文图生成服务。
- ### 第一步:启动PaddleHub Serving
- 运行启动命令:
- ```shell
$ hub serving start -m disco_diffusion_cnclip_vitb16
```
- 这样就完成了一个文图生成的在线服务API的部署,默认端口号为8866。
- **NOTE:** 如使用GPU预测,则需要在启动服务之前,请设置CUDA\_VISIBLE\_DEVICES环境变量,否则不用设置。
- ### 第二步:发送预测请求
- 配置好服务端,以下数行代码即可实现发送预测请求,获取预测结果,返回的预测结果在反序列化后即是上述接口声明中说明的DocumentArray类型,返回后对结果的操作方式和使用generate_image接口完全相同。
- ```python
import requests
import json
import cv2
import base64
from docarray import DocumentArray
# 发送HTTP请求
data = {'text_prompts': '孤舟蓑笠翁,独钓寒江雪。风格如齐白石所作'}
headers = {"Content-type": "application/json"}
url = "http://127.0.0.1:8866/predict/disco_diffusion_cnclip_vitb16"
r = requests.post(url=url, headers=headers, data=json.dumps(data))
# 获取返回结果
da = DocumentArray.from_base64(r.json()["results"])
# 手动将最终生成的图像保存到指定路径
da[0].save_uri_to_file('disco_diffusion_cnclip_vitb16_out-result.png')
# 将生成过程保存为一个动态图gif
da[0].chunks.save_gif('disco_diffusion_cnclip_vitb16_out-result.gif')
## 五、更新历史
* 1.0.0
......
......@@ -173,10 +173,7 @@ class DiscoDiffusionClip:
"""
Run as a service.
"""
results = []
for text_prompt in text_prompts:
result = self.generate_image(text_prompts=text_prompt, **kwargs)[0].to_base64()
results.append(result)
results = self.generate_image(text_prompts=text_prompts, **kwargs).to_base64()
return results
@runnable
......
......@@ -104,7 +104,47 @@ disco_diffusion_ernievil_base 是一个文图生成模型,可以通过输入
- **返回**
- ra(DocumentArray): DocumentArray对象, 包含`n_batches`个Documents,其中每个Document都保存了迭代过程的所有中间结果。详细可参考[DocumentArray使用文档](https://docarray.jina.ai/fundamentals/documentarray/index.html)。
## 四、更新历史
## 四、服务部署
- PaddleHub Serving可以部署一个在线文图生成服务。
- ### 第一步:启动PaddleHub Serving
- 运行启动命令:
- ```shell
$ hub serving start -m disco_diffusion_ernievil_base
```
- 这样就完成了一个文图生成的在线服务API的部署,默认端口号为8866。
- **NOTE:** 如使用GPU预测,则需要在启动服务之前,请设置CUDA\_VISIBLE\_DEVICES环境变量,否则不用设置。
- ### 第二步:发送预测请求
- 配置好服务端,以下数行代码即可实现发送预测请求,获取预测结果,返回的预测结果在反序列化后即是上述接口声明中说明的DocumentArray类型,返回后对结果的操作方式和使用generate_image接口完全相同。
- ```python
import requests
import json
import cv2
import base64
from docarray import DocumentArray
# 发送HTTP请求
data = {'text_prompts': '孤舟蓑笠翁,独钓寒江雪。风格如齐白石所作'}
headers = {"Content-type": "application/json"}
url = "http://127.0.0.1:8866/predict/disco_diffusion_ernievil_base"
r = requests.post(url=url, headers=headers, data=json.dumps(data))
# 获取返回结果
da = DocumentArray.from_base64(r.json()["results"])
# 手动将最终生成的图像保存到指定路径
da[0].save_uri_to_file('disco_diffusion_ernievil_base_out-result.png')
# 将生成过程保存为一个动态图gif
da[0].chunks.save_gif('disco_diffusion_ernievil_base_out-result.gif')
## 五、更新历史
* 1.0.0
......
......@@ -175,10 +175,7 @@ class DiscoDiffusionClip:
"""
Run as a service.
"""
results = []
for text_prompt in text_prompts:
result = self.generate_image(text_prompts=text_prompt, **kwargs)[0].to_base64()
results.append(result)
results = self.generate_image(text_prompts=text_prompts, **kwargs).to_base64()
return results
@runnable
......
......@@ -93,7 +93,46 @@
- **返回**
- images(List(PIL.Image)): 返回生成的所有图像列表,PIL的Image格式。
## 四、更新历史
## 四、服务部署
- PaddleHub Serving可以部署一个在线文图生成服务。
- ### 第一步:启动PaddleHub Serving
- 运行启动命令:
- ```shell
$ hub serving start -m ernie_vilg
```
- 这样就完成了一个文图生成的在线服务API的部署,默认端口号为8866。
- **NOTE:** 如使用GPU预测,则需要在启动服务之前,请设置CUDA\_VISIBLE\_DEVICES环境变量,否则不用设置。
- ### 第二步:发送预测请求
- 配置好服务端,以下数行代码即可实现发送预测请求,获取预测结果。
- ```python
import requests
import json
import cv2
import base64
from io import BytesIO
from PIL import Image
# 发送HTTP请求
data = {'text_prompts': '巨大的白色城堡'}
headers = {"Content-type": "application/json"}
url = "http://127.0.0.1:8866/predict/ernie_vilg"
r = requests.post(url=url, headers=headers, data=json.dumps(data))
# 获取返回结果
for i, result in enumerate(r.json()["results"]):
image = Image.open(BytesIO(base64.b64decode(result)))
image.save('result_{}.png'.format(i))
## 五、更新历史
* 1.0.0
......
import argparse
import ast
import base64
import os
import re
import sys
......@@ -214,6 +215,20 @@ class ErnieVilG:
output_dir=args.output_dir)
return results
@serving
def serving_method(self, text_prompts, **kwargs):
"""
Run as a service.
"""
results_base64encoded = []
results = self.generate_image(text_prompts=text_prompts, **kwargs)
for result in results:
buffered = BytesIO()
result.save(buffered, format="png")
img_str = base64.b64encode(buffered.getvalue()).decode('utf-8')
results_base64encoded.append(img_str)
return results_base64encoded
def add_module_input_arg(self):
"""
Add the command input options.
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册