1+ #! /bin/bash
2+
3+ # 定义日志文件
4+ LOG_FILE=" test_models.log"
5+
6+ # 清空或创建日志文件
7+ > " $LOG_FILE "
8+
9+ # 日志记录函数
10+ log () {
11+ echo " $( date ' +%Y-%m-%d %H:%M:%S' ) - $1 " | tee -a " $LOG_FILE "
12+ }
13+
14+ # 定义模型列表 (每个元素包含model_version, model_id, task)
15+ MODEL_LIST=(
16+ ' {"model_version": "v2.4.0", "model_id": "iic/cv_convnextTiny_ocr-recognition-general_damo", "task": "ocr-recognition", "input":{"image":"http://modelscope.oss-cn-beijing.aliyuncs.com/demo/images/image_ocr_recognition.jpg"}'
17+ ' {"model_version": "master", "model_id": "iic/SenseVoiceSmall", "task": "auto-speech-recognition", "input": "https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/asr_example_zh.wav"}'
18+ )
19+
20+ # 检查yaml文件是否存在
21+ YAML_FILE=" s.yaml"
22+ if [ ! -f " $YAML_FILE " ]; then
23+ log " Error: $YAML_FILE not found!"
24+ exit 1
25+ fi
26+
27+ # 遍历每个model_id
28+ for MODEL_INFO in " ${MODEL_LIST[@]} " ; do
29+ log " ========================================"
30+ log " Testing model: $MODEL_INFO "
31+ log " ========================================"
32+ # 从JSON对象中提取字段 (使用 jq)
33+ export MODEL_VERSION=$( echo " $MODEL_INFO " | grep -o ' "model_version": *"[^"]*' | awk -F' "' ' {print $4}' )
34+ export MODEL_ID=$( echo " $MODEL_INFO " | grep -o ' "model_id": *"[^"]*' | awk -F' "' ' {print $4}' )
35+ export TASK=$( echo " $MODEL_INFO " | grep -o ' "task": *"[^"]*' | awk -F' "' ' {print $4}' )
36+ INPUT=$( echo " $MODEL_INFO " | grep -o ' "input": *"[^"]*' | awk -F' "' ' {print $4}' )
37+
38+ # 生成随机函数名
39+ RANDOM_STRING=$( openssl rand -hex 10)
40+ export fc_component_function_name=ai-model-qwen-$RANDOM_STRING
41+ export NEW_MODEL_SERVICE_CLIENT_CONNECT_TIMEOUT=10000
42+
43+ # 下载模型
44+ log " Downloading model..."
45+ DOWNLOAD_OUTPUT=$( s model download -t s-pipeline.yaml 2>&1 )
46+ echo " $DOWNLOAD_OUTPUT " >> " $LOG_FILE "
47+ echo " $DOWNLOAD_OUTPUT "
48+ if echo " $DOWNLOAD_OUTPUT " | grep -q " Error" ; then
49+ log " Failed to download model: $MODEL_ID "
50+ continue
51+ fi
52+
53+ # 部署服务
54+ log " Deploying..."
55+ DEPLOY_OUTPUT=$( s deploy -t s-pipeline.yaml -y 2>&1 )
56+ echo " $DEPLOY_OUTPUT " >> " $LOG_FILE "
57+ echo " $DEPLOY_OUTPUT "
58+
59+ # 检查部署是否成功
60+ if echo " $DEPLOY_OUTPUT " | grep -q " state:.*Active" ; then
61+ log " Deployment successful for model: $MODEL_ID "
62+ else
63+ log " Deployment failed for model: $MODEL_ID "
64+ # 清理资源
65+ REMOVE_OUTPUT=$( s model remove -t s-pipeline.yaml -y 2>&1 )
66+ echo " $REMOVE_OUTPUT " >> " $LOG_FILE "
67+ echo " $REMOVE_OUTPUT "
68+ REMOVE_OUTPUT=$( s remove -t s-pipeline.yaml -y 2>&1 )
69+ echo " $REMOVE_OUTPUT " >> " $LOG_FILE "
70+ echo " $REMOVE_OUTPUT "
71+ continue
72+ fi
73+
74+ # 提取system_url
75+ SYSTEM_URL=$( echo " $DEPLOY_OUTPUT " | grep " system_url:" | sed ' s/.*system_url: *//' | tr -d ' "[:cntrl:]' )
76+ if [ -z $SYSTEM_URL ]; then
77+ log " Failed to extract system_url for model: $MODEL_ID "
78+ # 清理资源
79+ REMOVE_OUTPUT=$( s model remove -y 2>&1 )
80+ echo " $REMOVE_OUTPUT " >> " $LOG_FILE "
81+ echo " $REMOVE_OUTPUT "
82+ REMOVE_OUTPUT=$( s remove -y 2>&1 )
83+ echo " $REMOVE_OUTPUT " >> " $LOG_FILE "
84+ echo " $REMOVE_OUTPUT "
85+ continue
86+ fi
87+ log " Extracted system_url: $SYSTEM_URL "
88+
89+ # 发送测试请求
90+ log " Sending test request..."
91+ CURL_OUTPUT=$( curl -v -d ' {"input":$INPUT}' $SYSTEM_URL 2>&1 )
92+
93+ echo " $CURL_OUTPUT " >> " $LOG_FILE "
94+ echo " $CURL_OUTPUT "
95+
96+ # 检查curl请求是否成功
97+ if echo " $CURL_OUTPUT " | grep -q ' "object":"chat.completion"' ; then
98+ log " Model test successful for: $MODEL_ID "
99+ # 提取并显示模型回复内容
100+ RESPONSE_CONTENT=$( echo " $CURL_OUTPUT " | sed -n ' s/.*"text":"\([^"]*\)".*/\1/p' | sed ' s/\\n/\n/g' | sed ' s/\\t/\t/g' )
101+ log " Model response: $RESPONSE_CONTENT "
102+ else
103+ log " Model test failed for: $MODEL_ID "
104+ fi
105+
106+ # 清理资源
107+ log " Removing resources..."
108+ REMOVE_OUTPUT=$( s model remove -y 2>&1 )
109+ echo " $REMOVE_OUTPUT " >> " $LOG_FILE "
110+ echo " $REMOVE_OUTPUT "
111+ REMOVE_OUTPUT=$( s remove -y 2>&1 )
112+ echo " $REMOVE_OUTPUT " >> " $LOG_FILE "
113+ echo " $REMOVE_OUTPUT "
114+
115+ log " "
116+ log " Finished testing model: $MODEL_ID "
117+ log " "
118+ done
119+
120+ log " All models tested."
0 commit comments