Update README.md
Browse files
README.md
CHANGED
@@ -1,3 +1,115 @@
|
|
1 |
---
|
2 |
license: apache-2.0
|
3 |
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
---
|
2 |
license: apache-2.0
|
3 |
---
|
4 |
+
|
5 |
+
```python
|
6 |
+
import torch
|
7 |
+
from transformers import T5ForConditionalGeneration, T5Tokenizer
|
8 |
+
|
9 |
+
model_path = "twwch/mt5-base-summary"
|
10 |
+
model = T5ForConditionalGeneration.from_pretrained(model_path)
|
11 |
+
tokenizer = T5Tokenizer.from_pretrained(model_path)
|
12 |
+
|
13 |
+
device = torch.device('cuda:0') if torch.cuda.is_available() else torch.device('cpu')
|
14 |
+
model.to(device)
|
15 |
+
model.eval()
|
16 |
+
|
17 |
+
text = """
|
18 |
+
什么是Nginx
|
19 |
+
Nginx是一个开源的高性能HTTP和反向代理服务器。它可以用于处理静态资源、负载均衡、反向代理和缓存等任务。Nginx被广泛用于构建高可用性、高性能的Web应用程序和网站。它具有低内存消耗、高并发能力和良好的稳定性,因此在互联网领域非常受欢迎。
|
20 |
+
为什么使用Nginx
|
21 |
+
|
22 |
+
高性能:Nginx采用事件驱动的异步架构,能够处理大量并发连接而不会消耗过多的系统资源。它的处理能力比传统的Web服务器更高,在高并发负载下表现出色。
|
23 |
+
高可靠性:Nginx具有强大的容错能力和稳定性,能够在面对高流量和DDoS攻击等异常情况下保持可靠运行。它能通过健康检查和自动故障转移来保证服务的可用性。
|
24 |
+
负载均衡:Nginx可以作为反向代理服务器,实现负载均衡,将请求均匀分发给多个后端服务器。这样可以提高系统的整体性能和可用性。
|
25 |
+
静态文件服务:Nginx对静态资源(如HTML、CSS、JavaScript、图片等)的处理非常高效。它可以直接缓存静态文件,减轻后端服务器的负载。
|
26 |
+
扩展性:Nginx支持丰富的模块化扩展,可以通过添加第三方模块来提供额外的功能,如gzip压缩、SSL/TLS加密、缓存控制等。
|
27 |
+
|
28 |
+
如何处理请求
|
29 |
+
Nginx处理请求的基本流程如下:
|
30 |
+
|
31 |
+
|
32 |
+
接收请求:Nginx作为服务器软件监听指定的端口,接收客户端发来的请求。
|
33 |
+
|
34 |
+
|
35 |
+
解析请求:Nginx解析请求的内容,包括请求方法(GET、POST等)、URL、头部信息等。
|
36 |
+
|
37 |
+
|
38 |
+
配置匹配:Nginx根据配置文件中的规则和匹配条件,决定如何处理该请求。配置文件定义了虚拟主机、反向代理、负载均衡、缓存等特定的处理方式。
|
39 |
+
|
40 |
+
|
41 |
+
处理请求:Nginx根据配置的处理方式,可能会进行以下操作:
|
42 |
+
|
43 |
+
静态文件服务:如果请求的是静态资源文件,如HTML、CSS、JavaScript、图片等,Nginx可以直接返回文件内容,不必经过后端应用程序。
|
44 |
+
反向代理:如果配置了反向代理,Nginx将请求转发给后端的应用服务器,然后将其响应返回给客户端。这样可以提供负载均衡、高可用性和缓存等功能。
|
45 |
+
缓存:如果启用了缓存,Nginx可以缓存一些静态或动态内容的响应,在后续相同的请求中直接返回缓存的响应,减少后端负载并提高响应速度。
|
46 |
+
URL重写:Nginx可以根据配置的规则对URL进行重写,将请求从一个URL重定向到另一个URL或进行转换。
|
47 |
+
SSL/TLS加密:如果启用了SSL/TLS,Nginx可以负责加密和解密HTTPS请求和响应。
|
48 |
+
访问控制:Nginx可以根据配置的规则对请求进行访问控制,例如限制IP访问、进行身份认证等。
|
49 |
+
|
50 |
+
响应结果:Nginx根据处理结果生成响应报文,包括状态码、头部信息和响应内容。然后将响应发送给客户端。
|
51 |
+
"""
|
52 |
+
|
53 |
+
|
54 |
+
def _split_text(text, length):
|
55 |
+
chunks = []
|
56 |
+
start = 0
|
57 |
+
while start < len(text):
|
58 |
+
if len(text) - start > length:
|
59 |
+
pos_forward = start + length
|
60 |
+
pos_backward = start + length
|
61 |
+
pos = start + length
|
62 |
+
while (pos_forward < len(text)) and (pos_backward >= 0) and (pos_forward < 20 + pos) and (
|
63 |
+
pos_backward + 20 > pos) and text[pos_forward] not in {'.', '。', ',', ','} and text[
|
64 |
+
pos_backward] not in {'.', '。', ',', ','}:
|
65 |
+
pos_forward += 1
|
66 |
+
pos_backward -= 1
|
67 |
+
if pos_forward - pos >= 20 and pos_backward <= pos - 20:
|
68 |
+
pos = start + length
|
69 |
+
elif text[pos_backward] in {'.', '。', ',', ','}:
|
70 |
+
pos = pos_backward
|
71 |
+
else:
|
72 |
+
pos = pos_forward
|
73 |
+
chunks.append(text[start:pos + 1])
|
74 |
+
start = pos + 1
|
75 |
+
else:
|
76 |
+
chunks.append(text[start:])
|
77 |
+
break
|
78 |
+
# Combine last chunk with previous one if it's too short
|
79 |
+
if len(chunks) > 1 and len(chunks[-1]) < 100:
|
80 |
+
chunks[-2] += chunks[-1]
|
81 |
+
chunks.pop()
|
82 |
+
return chunks
|
83 |
+
|
84 |
+
|
85 |
+
def summary(text):
|
86 |
+
chunks = _split_text(text, 300)
|
87 |
+
chunks = [
|
88 |
+
"summarize: " + chunk
|
89 |
+
for chunk in chunks
|
90 |
+
]
|
91 |
+
input_ids = tokenizer(chunks, return_tensors="pt",
|
92 |
+
max_length=512,
|
93 |
+
padding=True,
|
94 |
+
truncation=True).input_ids.to(device)
|
95 |
+
outputs = model.generate(input_ids, max_length=250, num_beams=4, no_repeat_ngram_size=2)
|
96 |
+
tokens = outputs.tolist()
|
97 |
+
output_text = [
|
98 |
+
tokenizer.decode(tokens[i], skip_special_tokens=True)
|
99 |
+
for i in range(len(tokens))
|
100 |
+
]
|
101 |
+
for i in range(len(output_text)):
|
102 |
+
print(output_text[i])
|
103 |
+
|
104 |
+
|
105 |
+
summary(text)
|
106 |
+
|
107 |
+
```
|
108 |
+
|
109 |
+
输入:
|
110 |
+
```
|
111 |
+
段落内容Nginx是一个开源的高性能HTTP和反向代理服务器,可以用于处理静态资源、负载均衡、反反代理和缓存等任务。它被广泛用于构建高可用性、高性能的Web应用程序和网站,具有低内存消耗、高并发能力和良好的稳定性,因此在互联网领域非常受欢迎。高性能和高可靠性相比传统的Web服务器更高,在高并且发负担下表现出色。高稳定性和容错能力,能够在面对高流量和DDoS攻击等异常情况下保持可靠运行。
|
112 |
+
段落内容Nginx处理请求的基本流程,包括负载均衡、静态文件服务、扩展性、如何解决请求的流程和如何处理。其中包括接收请求和解析请求,以及对客户端发来的请求进行解析。
|
113 |
+
段落内容Nginx的配置匹配和处理请求。配置文件定义了虚拟主机、反向代理、负载均衡、缓存等特定的处理方式,并根据配置进行静态文件服务和反面信息处理的操作。通过调用静存来实现高可用性,并且可以提供高可性和缓储等功能。
|
114 |
+
段落内容主要涉及到缓存静态或动态内容的响应,包括URL重写、SSL/TLS加密、访问控制、响应结果生成和发送给客户端等功能。Nginx可以根据配置的规则对URL进行重写作,将请求从一个URL轻定向到另一个URL或进行转换。 综上所述,Nginx的缓解和响应速度可以快速提高。
|
115 |
+
```
|