LLM: using html to visualize the perf result for Arc (#9228)

* LLM: using html to visualize the perf result for Arc

* deploy the html file

* add python license

* reslove some comments
This commit is contained in:
WeiguangHan 2023-10-24 18:05:25 +08:00 committed by GitHub
parent 90162264a3
commit ec9195da42
3 changed files with 47 additions and 5 deletions

View file

@ -127,5 +127,8 @@ jobs:
cd python/llm/dev/benchmark/all-in-one cd python/llm/dev/benchmark/all-in-one
export http_proxy=${HTTP_PROXY} export http_proxy=${HTTP_PROXY}
export https_proxy=${HTTPS_PROXY} export https_proxy=${HTTPS_PROXY}
taskset -c 0-$((THREAD_NUM - 1)) python run.py python run.py
curl -T ./*.csv ${LLM_FTP_URL}/llm/ggml-actions/perf/ curl -T ./*.csv ${LLM_FTP_URL}/llm/ggml-actions/perf/
cd ../../../test/benchmark
python csv_to_html.py -f ../../dev/benchmark/all-in-one
cp ./*.html /mnt/disk1/nightly_perf/

View file

@ -59,9 +59,9 @@ def run_model(repo_id, test_api, in_out_pairs, local_model_hub=None, warm_up=1,
for in_out_pair in in_out_pairs: for in_out_pair in in_out_pairs:
if result: if result:
results.append([repo_id, results.append([repo_id,
np.mean(result[in_out_pair], axis=0)[0], round(np.mean(result[in_out_pair], axis=0)[0]*1000.0, 2),
np.mean(result[in_out_pair], axis=0)[1], round(np.mean(result[in_out_pair], axis=0)[1]*1000.0, 2),
np.mean(result[in_out_pair], axis=0)[2], round(np.mean(result[in_out_pair], axis=0)[2]*1000.0, 2),
in_out_pair, in_out_pair,
f'{int(np.mean(result[in_out_pair], axis=0)[3])}' + f'{int(np.mean(result[in_out_pair], axis=0)[3])}' +
f'-{int(np.mean(result[in_out_pair], axis=0)[4])}', f'-{int(np.mean(result[in_out_pair], axis=0)[4])}',
@ -545,7 +545,7 @@ if __name__ == '__main__':
for api in conf.test_api: for api in conf.test_api:
for model in conf.repo_id: for model in conf.repo_id:
run_model(model, api, conf['in_out_pairs'], conf['local_model_hub'], conf['warm_up'], conf['num_trials'], conf['num_beams']) run_model(model, api, conf['in_out_pairs'], conf['local_model_hub'], conf['warm_up'], conf['num_trials'], conf['num_beams'])
df = pd.DataFrame(results, columns=['model', '1st token avg latency (s)', '2+ avg latency (s/token)', 'encoder time (s)', df = pd.DataFrame(results, columns=['model', '1st token avg latency (ms)', '2+ avg latency (ms/token)', 'encoder time (ms)',
'input/output tokens', 'actual input/output tokens', 'num_beams']) 'input/output tokens', 'actual input/output tokens', 'num_beams'])
df.to_csv(f'{current_dir}/{api}-results-{today}.csv') df.to_csv(f'{current_dir}/{api}-results-{today}.csv')
results = [] results = []

View file

@ -0,0 +1,39 @@
#
# Copyright 2016 The BigDL Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Python program to convert CSV to HTML Table
import os
import sys
import argparse
import pandas as pd
def main():
parser = argparse.ArgumentParser(description="convert .csv file to .html file")
parser.add_argument("-f", "--folder_path", type=str, dest="folder_path",
help="The directory which stores the .csv file", default="../../dev/benchmark/all-in-one")
args = parser.parse_args()
csv_files = []
for file_name in os.listdir(args.folder_path):
file_path = os.path.join(args.folder_path, file_name)
if os.path.isfile(file_path) and file_name.endswith(".csv"):
csv_files.append(file_path)
a = pd.read_csv(csv_files[0], index_col=0).to_html(csv_files[0].split("/")[-1].split(".")[0]+".html")
if __name__ == "__main__":
sys.exit(main())