test/framework/scripts/quantization_scenario.py

71 lines
2.3 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import time
import random
import string
from framework.core.logger import get_logger
from framework.business.quantization_page import QuantizationPage
logger = get_logger("QuantizationScenario")
def _create_and_submit_task(quant_page: QuantizationPage, task_name: str):
"""内部辅助函数:执行单次完整的任务创建流"""
# 1. 进入任务创建流程
quant_page.navigate_to()
quant_page.click_create_task()
# 2. 输入名称
quant_page.input_task_name(task_name)
# 3. 选择编译模式
quant_page.select_mode_fast_eval()
# 4. 选择镜像
quant_page.select_image("dcloud_ai_toolchain_ubuntu_22_s100_cpu-2")
# 5. 选取模型文件
quant_page.upload_model_file("model", "result.onnx")
# 6. 输入 march 值
quant_page.input_march_param("nash-e")
# 7. 提交表单
quant_page.click_final_submit()
def run_quantization_lifecycle(quant_page: QuantizationPage):
"""量化任务全生命周期流程"""
logger.info("开始执行量化工具自动化流程...")
# ================= 阶段 1手动终止链路 =================
random_str1 = ''.join(random.choices(string.ascii_uppercase + string.digits, k=8))
task_1 = f"AutoQuant_{random_str1}"
logger.info(f"--- 阶段一: 测试任务手动终止与删除 [{task_1}] ---")
_create_and_submit_task(quant_page, task_1)
# 1. 查日志
quant_page.open_and_close_logs(task_1)
# 2. 停止
quant_page.stop_task(task_1)
# 3. 删除
quant_page.delete_task(task_1)
# ================= 阶段 2完整成功链路 =================
random_str2 = ''.join(random.choices(string.ascii_uppercase + string.digits, k=8))
task_2 = f"AutoQuant_{random_str2}"
logger.info(f"--- 阶段二: 测试任务完整成功链路 [{task_2}] ---")
_create_and_submit_task(quant_page, task_2)
# 1. 查日志
quant_page.open_and_close_logs(task_2)
# 监控状态流转为终态 (完成或失败)
quant_page.wait_for_task_finished(task_2)
# + 成功后的新增操作: 报告查看与全量下载拦截
quant_page.open_and_close_report(task_2)
quant_page.download_all_results(task_2)
logger.info("✅ 量化工具全生命周期(异常截断+成功收尾) 双链路完整验证通过!")