40f1e391
tangwang
cnclip
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
#!/bin/bash
###############################################################################
# CN-CLIP 服务测试脚本
#
# 用途:
# 测试 CN-CLIP 服务的文本和图像编码功能(使用 gRPC 协议)
#
# 使用方法:
# ./scripts/test_cnclip_service.sh [PORT]
#
# 参数:
# PORT: 服务端口(默认:51000)
#
###############################################################################
set -e
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# 默认端口
PORT=${1:-51000}
GRPC_URL="grpc://localhost:${PORT}"
echo -e "${BLUE}========================================${NC}"
echo -e "${BLUE}CN-CLIP 服务测试${NC}"
echo -e "${BLUE}========================================${NC}"
echo ""
echo -e "服务地址: ${GRPC_URL} (gRPC 协议)"
echo ""
# 检查 clip_client 是否安装
if ! python3 -c "from clip_client import Client" 2>/dev/null; then
echo -e "${RED}错误: clip_client 未安装${NC}"
echo -e "${YELLOW}请运行: pip install clip-client${NC}"
exit 1
fi
# 使用 Python 客户端测试(因为服务使用 gRPC 协议)
python3 << PYTHON_EOF
import sys
import numpy as np
from clip_client import Client
def test_encoding(client, test_name, inputs):
print(f"\n{test_name}...")
try:
result = client.encode(inputs)
if isinstance(result, np.ndarray):
print(f"✓ 成功! 形状: {result.shape}")
print(f" 输入数量: {len(inputs)}")
print(f" 输出维度: {result.shape[1]}")
# 显示每个 embedding 的维度和前20个数字
for i in range(min(len(inputs), result.shape[0])):
emb = result[i]
first_20 = emb[:20].tolist()
print(f" Embedding[{i}] 维度: {len(emb)}")
print(f" 前20个数字: {first_20}")
return True
else:
print(f"✗ 失败: 返回类型错误: {type(result)}")
return False
except Exception as e:
print(f"✗ 失败: {e}")
import traceback
traceback.print_exc()
return False
# 测试
port = "${PORT}"
client = Client(f'grpc://localhost:{port}')
results = []
# 测试1: 文本编码
results.append(test_encoding(
client,
"测试1: 编码文本",
['这是一个测试文本', '另一个测试文本']
))
# 测试2: 图像编码
results.append(test_encoding(
client,
"测试2: 编码图像(远程 URL)",
['https://oss.essa.cn/98532128-cf8e-456c-9e30-6f2a5ea0c19f.jpg']
))
# 测试3: 混合编码
results.append(test_encoding(
client,
"测试3: 混合编码(文本和图像)",
['这是一段文本', 'https://oss.essa.cn/98532128-cf8e-456c-9e30-6f2a5ea0c19f.jpg']
))
# 汇总
print("\n" + "="*50)
print("测试结果汇总")
print("="*50)
print(f"总测试数: {len(results)}")
print(f"通过: {sum(results)}")
print(f"失败: {len(results) - sum(results)}")
if all(results):
print("\n✓ 所有测试通过!")
sys.exit(0)
else:
print("\n✗ 部分测试失败")
sys.exit(1)
PYTHON_EOF
TEST_RESULT=$?
if [ $TEST_RESULT -eq 0 ]; then
echo ""
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN}✓ 所有测试通过!${NC}"
echo -e "${GREEN}========================================${NC}"
else
echo ""
echo -e "${RED}========================================${NC}"
echo -e "${RED}✗ 部分测试失败${NC}"
echo -e "${RED}========================================${NC}"
exit 1
fi
|