#!/usr/bin/env python3 # -*- encoding: utf-8 -*- # Copyright FunASR (https://github.com/alibaba-damo-academy/FunASR). All Rights Reserved. # MIT License (https://opensource.org/licenses/MIT) import json import os import sys from funasr import AutoModel if len(sys.argv) > 1: ckpt_dir = sys.argv[1] ckpt_id = sys.argv[2] jsonl = sys.argv[3] output_dir = sys.argv[4] device = sys.argv[5] else: ckpt_dir = "/nfs/beinian.lzr/workspace/GPT-4o/Exp/exp7/5m-8gpu/exp5-1-0619" ckpt_id = "model.pt.ep6" jsonl = ( "/nfs/beinian.lzr/workspace/GPT-4o/Data/Speech2Text/TestData/s2tchat.v20240619.test.jsonl" ) dataset = jsonl.split("/")[-1] output_dir = os.path.join(ckpt_dir, f"inference-{ckpt_id}", dataset) model = AutoModel( model=ckpt_dir, init_param=f"{os.path.join(ckpt_dir, ckpt_id)}", output_dir=output_dir, device=device, fp16=False, bf16=False, llm_dtype="bf16", ) with open(jsonl, "r") as f: lines = f.readlines() tearchforing = False for i, line in enumerate(lines): key_i = f"dialog_{i}" data_dict = json.loads(line.strip()) data = data_dict["messages"] contents = model.model.data_template(data) system = contents["system"] user = contents["user"] assistant = contents["assistant"] system_i, user_i, assistant_i = [], [], [] contents_i = [] for j, (system_prompt, user_prompt, target_out) in enumerate(zip(system, user, assistant)): key = f"{key_i}_turn_{j}" if j == 0: contents_i.append({"role": "system", "content": system_prompt}) contents_i.append({"role": "user", "content": user_prompt}) contents_i.append({"role": "assistant", "content": target_out}) res = model.generate( input=[contents_i], tearchforing=tearchforing, cache={}, key=key, ) print(res)