0%

为什么要使用Gunicorn

Flask自带的web服务器可用于开发环境运行调试,不适合部署在生产环境,无法满足线上的性能要求。

当使用,以下命令启动Flask应用时:

1
app.run(host = '0.0.0.0',port=6000)

Flask框架会有一段

WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.

image-20240624182739132

Gunicorn是基于unix系统,被广泛应用的高性能的Python WSGI HTTP Server。用来解析HTTP请求的网关服务。它通常是在进行反向代理(如nginx),或者进行负载均衡(如AWS ELB)和一个web 应用(比如Django或者Flask)之间。

目前,gunicorn只能运行在Linux环境中,不支持windows平台。

阅读全文 »

除了conda外,在Linux系统中,还可以使用Pythonvenv模块来创建Python虚拟环境。该模块创建出来的Python环境更加轻量化。

安装Python 3(如果尚未安装)

此步骤自行百度。

打开终端。

运行以下命令以创建虚拟环境:

1
python3 -m venv myenv

image-20240624174358490

阅读全文 »

Celery简介

Celery 是一个简单、灵活、可靠的分布式系统,处理大量消息,同时为操作提供维护这样一个系统所需的工具。它是一个专注于实时处理的任务队列,同时也支持任务调度。

img

Celery的架构由三部分组成,消息中间件(message broker),任务执行单元(worker)和任务执行结果存储(task result store)组成。

阅读全文 »

简介

PM2是一个守护进程管理工具,帮助您管理和守护您的应用程序。它以简单直观的 CLI 命令行方式进行工作。

下载安装

最新的 PM2 版本可以使用 NPMYarn 安装:

1
2
3
4
5
# npm
npm install pm2@latest -g
# yarn
yarn global add pm2
# 二选一即可

建议使用npm安装,如果没有请自行百度安装。

输入pm2 -V打印PM2版本。

image-20240621230443094

阅读全文 »

Tmux解决痛点

  1. 后台程序挂起。在使用FlaskFastAPIGradio启动某些服务或API时,往往会将当前会话变成服务监控状态,如果会话关闭会导致服务也随之关闭。

    有的人可能会说,可以使用nohup将服务在后台执行,单是这样会生成额外的nohup.out文件,并且无法实时观看服务运行状态。

  2. 多个窗口之间来回切换。在Linux操作系统的使用过程中,可能会出现开启多个窗口的情况,随着窗口的逐步开启,自己都会忘记每个窗口有什么用,能不能关闭,管理起来非常麻烦。

  3. 终端工作环境可以实时保留,并且不会因会话关闭导致工作环境丢失。并且在不同设备上可以共享工作环境,不在拘泥于设备。

如果你也有以上烦恼,那么不妨试试Tmux这款工具。

阅读全文 »

读取数据

1
2
3
4
5
6
7
8
9
10
11
import SimpleITK as sitk
import matplotlib.pyplot as plt
import numpy as np
import cv2

import torch
import torch.nn as nn
import torch.nn.functional as F

from torchvision.transforms import v2 as transforms
from torch.utils.data import DataLoader, Dataset
1
dcm_path = 'data/10009.dcm'
阅读全文 »

读取数据

1
import SimpleITK as sitk
1
2
3
import matplotlib.pyplot as plt
import numpy as np
import cv2

读取CT影像照片DCM文件

1
dcm_path = 'data/10009.dcm'
1
2
3
img = sitk.ReadImage(dcm_path)  # 读取DCM文件
img = sitk.GetArrayFromImage(img) # 获取数组对象
img = img.squeeze() # 删除维度为1的维度
1
2
3
img[img < 0] = 0
img[img > 255] = 255
img = np.array(img, dtype=np.uint8)
1
2
3
4
# 绘制图片
plt.imshow(img, cmap='gray')
plt.axis('off')
plt.show()


output_20240607232201

阅读全文 »

读取数据

1
2
3
4
import cv2
import os
from glob import glob
import numpy as np
1
2
3
4
5
6
7
8
9
10
11
12
import matplotlib.pyplot as plt

def plot_image(img, mode='bgr'):
if mode=='bgr':
img = img[:, :, ::-1]
plt.figure(dpi=200)
if mode=='gray':
plt.imshow(img, cmap='gray')
else:
plt.imshow(img)
plt.axis('off')
plt.show()
1
2
name_list = os.listdir('data/person_data/')
print(name_list)
['baijingting', 'jiangwen', 'pengyuyan', 'zhangziyi', 'zhaoliying']
阅读全文 »

1
2
from ChatModel import OllamaChat
chat_model = OllamaChat(url="http://localhost:6006/api/chat", model_name='qwen:32b')

文本扩展

文本扩展是大语言模型的一个重要应用方向,它可以输入简短文本,生成更加丰富的长文。这为创作提供了强大支持,但也可能被滥用。因此开发者在使用时,必须谨记社会责任,避免生成有害内容。

在本章中,我们将学习基于LLM实现一个客户邮件自动生成的示例,用于根据客户反馈优化客服邮件。这里还会介绍“温度”(temperature)这一超参数,它可以控制文本生成的多样性

需要注意,扩展功能只应用来辅助人类创作,而非大规模自动生成内容。开发者应审慎使用,避免产生负面影响。只有以负责任和有益的方式应用语言模型,才能发挥其最大价值。相信践行社会责任的开发者可以利用语言模型的扩展功能,开发出真正造福人类的创新应用。

阅读全文 »

1
2
from ChatModel import OllamaChat
chat_model = OllamaChat(url="http://localhost:6006/api/chat", model_name='qwen:32b')

提示原则

设计高效 Prompt 的两个关键原则:

  1. 编写清晰、具体的指令
  2. 给予模型充足思考时间

首先,Prompt 需要清晰明确地表达需求,提供充足上下文,使语言模型准确理解我们的意图,就像向一个外星人详细解释人类世界一样。过于简略的 Prompt 往往使模型难以把握所要完成的具体任务。

其次,让语言模型有充足时间推理也极为关键。就像人类解题一样,匆忙得出的结论多有失误。因此Prompt 应加入逐步推理的要求,给模型留出充分思考时间,这样生成的结果才更准确可靠。

如果 Prompt 在这两点上都作了优化,语言模型就能够尽可能发挥潜力,完成复杂的推理和生成任务。掌握这些 Prompt 设计原则,是开发者取得语言模型应用成功的重要一步。

阅读全文 »