如何看待华为在发布会展示大模型能力,按下Ctrl

2024-05-21 星期二

有两种可能性可以达到视频中两次运行的展示效果:


第一种(在后台线程中执行大模型推理代码,打印报错是主线程中的信息,捕获异常之后通过旗标通知后台线程停止计算):

import time
import traceback
from threading import Thread

import cv2
import torch

running = True

print = lambda *args, **kwargs: __builtins__.print(' '.join(map(str, args)) + '\n', end='', **kwargs)


def ModelInference(prompt, save_path):
    # 通过旗标传递推理程序是否中途退出
    global running

    # 检查推理是否已经启动
    print('[INFO] 开始执行模型推理:', (prompt, save_path))

    start_time = time.time()
    while True:
        if not running:
            print('[INFO] 按下Ctrl-C介入退出')
            return

        # 模拟AI计算代码,耗时略大于6秒
        img = ...
        if time.time() - start_time > 6.2:
            break

    # 将推理图片写入路径
    cv2.imwrite(img, save_path)

    # 检查推理是否运行结束
    print('[INFO] 运行输出结果完毕')


if __name__ == '__main__':
    # 等待用户输入提示词信息
    prompt = input('>>> ')
    save_path = '/home/demo/output.jpeg'

    # 发起后台线程,运行推理任务,并将参数传递给后台线程
    th = Thread(target=ModelInference, args=(prompt, save_path))
    th.start()

    # 捕获Ctrl-C异常,避免按下Ctrl-C后主线程退出,但是后台线程继续执行任务
    try:
        # 错误信息显示就是打印在这里
        time.sleep(6)
    except KeyboardInterrupt:
        # 通过设置全局变量,传递AI推理线程中途退出的信号
        running = False
        # 打印异常信息,因为图示中有报错显示
        traceback.print_exc()

    # 阻塞主线程直到后台线程运行结束,因为视频中主线程没有立刻运行结束
    th.join()


第二种(这个太简单了,华为运行的肯定不是这一种):

import time

input('>>> ')
time.sleep(6)

with open('/home/demo/output.jpeg', 'wb') as f:
    f.write(b'...')

原文地址:点击