mirror of
https://github.com/huggingface/text-generation-inference.git
synced 2025-06-06 09:22:10 +00:00
fix: Fix PR comments (remove Jinja)
This commit is contained in:
parent
ed83bfe0ff
commit
4e78b00677
1
.github/workflows/load_test.yaml
vendored
1
.github/workflows/load_test.yaml
vendored
@ -74,6 +74,7 @@ jobs:
|
||||
run: |
|
||||
export PATH="/home/runner/.local/bin:$PATH"
|
||||
cd load_tests
|
||||
make build-k6
|
||||
make load-test
|
||||
shell: bash
|
||||
|
||||
|
@ -7,18 +7,13 @@ download-dataset:
|
||||
echo "Dataset already downloaded"; \
|
||||
fi
|
||||
|
||||
load-test: download-dataset build-k6
|
||||
load-test: export PATH = $(shell pwd)/.bin/:$(PATH)
|
||||
load-test: download-dataset
|
||||
poetry install && poetry run python load_test.py
|
||||
|
||||
build-k6:
|
||||
mkdir -p /tmp/xk6 && \
|
||||
cd /tmp/xk6 && \
|
||||
git clone https://github.com/mstoykov/xk6-sse.git && \
|
||||
cd xk6-sse && \
|
||||
git checkout useSobek && \
|
||||
go install go.k6.io/xk6/cmd/xk6@latest && \
|
||||
xk6 build --with github.com/phymbert/xk6-sse=. && \
|
||||
mkdir -p ~/.local/bin/ && \
|
||||
mv k6 /tmp/k6-sse && \
|
||||
rm -rf /tmp/xk6 && \
|
||||
/tmp/k6-sse --version
|
||||
xk6 build --with github.com/phymbert/xk6-sse@0abbe3e94fe104a13021524b1b98d26447a7d182 && \
|
||||
mkdir -p .bin/ && \
|
||||
mv k6 .bin/k6 && \
|
||||
.bin/k6 --version
|
@ -24,8 +24,7 @@ class ExecutorInputType(Enum):
|
||||
|
||||
|
||||
class K6Executor:
|
||||
def __init__(self, name, template_name, executor_input_type=ExecutorInputType.SHAREGPT_CONVERSATIONS):
|
||||
self.template_name = template_name
|
||||
def __init__(self, name, executor_input_type=ExecutorInputType.SHAREGPT_CONVERSATIONS):
|
||||
self.variables = {}
|
||||
self.rendered_file = None
|
||||
self.name = name
|
||||
@ -35,14 +34,6 @@ class K6Executor:
|
||||
elif executor_input_type == ExecutorInputType.SHAREGPT_CONVERSATIONS:
|
||||
self.input_filename = "inputs_variable_tokens.json"
|
||||
|
||||
def render(self):
|
||||
template = env.get_template(self.template_name)
|
||||
_, path = tempfile.mkstemp("k6", "benchmark")
|
||||
cwd = os.getcwd()
|
||||
with open(path, "w") as f:
|
||||
f.write(template.render(cwd=cwd, input_filename=self.input_filename, **self.variables))
|
||||
self.rendered_file = path
|
||||
|
||||
def __str__(self):
|
||||
# returns an underscore separated string of the variables for filename generation
|
||||
params = "_".join([f"{k}_{v}" for k, v in sorted(self.variables.items()) if type(v) == str or type(v) == int])
|
||||
@ -52,7 +43,7 @@ class K6Executor:
|
||||
class K6ConstantArrivalRateExecutor(K6Executor):
|
||||
def __init__(self, pre_allocated_vus: int, rate_per_second: int, duration: str,
|
||||
executor_input_type: ExecutorInputType):
|
||||
super().__init__("constant_arrival_rate", "k6_constant_arrival_rate.js.j2", executor_input_type)
|
||||
super().__init__("constant_arrival_rate", executor_input_type)
|
||||
self.variables = {
|
||||
"pre_allocated_vus": pre_allocated_vus, # it's also the max vus
|
||||
"rate": rate_per_second,
|
||||
@ -60,21 +51,9 @@ class K6ConstantArrivalRateExecutor(K6Executor):
|
||||
}
|
||||
|
||||
|
||||
class K6RampingArrivalRateExecutor(K6Executor):
|
||||
def __init__(self, pre_allocated_vus: int, start_rate: int, time_unit: str, stages: List[Dict[str, Any]],
|
||||
executor_input_type: ExecutorInputType):
|
||||
super().__init__("ramping_arrival_rate", "k6_ramping_arrival_rate.js.j2", executor_input_type)
|
||||
self.variables = {
|
||||
"pre_allocated_vus": pre_allocated_vus,
|
||||
"start_rate": start_rate,
|
||||
"time_unit": time_unit,
|
||||
"stages": stages
|
||||
}
|
||||
|
||||
|
||||
class K6ConstantVUsExecutor(K6Executor):
|
||||
def __init__(self, vus: int, duration: str, executor_input_type: ExecutorInputType):
|
||||
super().__init__("constant_vus", "k6_constant_vus.js.j2", executor_input_type)
|
||||
super().__init__("constant_vus", executor_input_type)
|
||||
self.variables = {
|
||||
"vus": vus,
|
||||
"duration": duration
|
||||
@ -166,13 +145,17 @@ class K6Benchmark:
|
||||
f.write(json.dumps(outputs))
|
||||
|
||||
def run(self):
|
||||
self.k6_config.executor.render()
|
||||
args = f"/tmp/k6-sse run --out json=results.json {self.k6_config.executor.rendered_file}"
|
||||
env_vars = []
|
||||
for key, val in self.k6_config.executor.variables.items():
|
||||
env_vars += ["-e", f"{key.upper()}={val}"]
|
||||
env_vars += ["-e", f"MAX_NEW_TOKENS={self.k6_config.executor.variables['max_new_tokens']}"]
|
||||
env_vars += ["-e", f"INPUT_FILENAME={self.k6_config.executor.input_filename}"]
|
||||
args = ["k6", "run", "--out", "json=results.json"] + env_vars + ["main.js"]
|
||||
logger.info(f"Running k6 with parameters: {args}")
|
||||
logger.info(f"K6Config is: {self.k6_config}")
|
||||
# start a k6 subprocess
|
||||
self.process = subprocess.Popen(args,
|
||||
stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True)
|
||||
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
while buffer := os.read(self.process.stdout.fileno(),
|
||||
2048): # read the output of the process, don't buffer on new lines
|
||||
print(buffer.decode(), end='')
|
||||
|
@ -16,9 +16,17 @@ const interTokenLatency = new Trend('inter_token_latency', true); // is microsec
|
||||
|
||||
const tokensReceived = new Trend('tokens_received');
|
||||
|
||||
const max_new_tokens = {{ max_new_tokens }};
|
||||
if (__ENV.MAX_NEW_TOKENS === undefined) {
|
||||
throw new Error('MAX_NEW_TOKENS must be defined');
|
||||
}
|
||||
const max_new_tokens = parseInt(__ENV.MAX_NEW_TOKENS)
|
||||
const input_filename = __ENV.INPUT_FILENAME;
|
||||
if (input_filename === undefined) {
|
||||
throw new Error('INPUT_FILENAME must be defined');
|
||||
|
||||
const shareGPT = JSON.parse(open("{{ cwd }}/{{ input_filename }}"))
|
||||
}
|
||||
|
||||
const shareGPT = JSON.parse(open(input_filename))
|
||||
|
||||
export function handleSummary(data) {
|
||||
return {
|
||||
@ -128,3 +136,67 @@ export default function run() {
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
export function get_options() {
|
||||
const test_type = __ENV.TEST_TYPE;
|
||||
if (test_type === undefined) {
|
||||
throw new Error('TEST_TYPE must be defined');
|
||||
}
|
||||
switch (test_type) {
|
||||
case 'constant_arrival_rate':
|
||||
return get_constant_arrival_rate_options();
|
||||
case 'constant_vus':
|
||||
return get_constant_vus_options();
|
||||
default:
|
||||
throw new Error('Invalid test type');
|
||||
}
|
||||
}
|
||||
|
||||
function get_constant_arrival_rate_options() {
|
||||
const duration = __ENV.DURATION;
|
||||
if (duration === undefined) {
|
||||
throw new Error('DURATION must be defined');
|
||||
}
|
||||
if (__ENV.PRE_ALLOCATED_VUS === undefined) {
|
||||
throw new Error('PRE_ALLOCATED_VUS must be defined');
|
||||
}
|
||||
const pre_allocated_vus = parseInt(__ENV.PRE_ALLOCATED_VUS);
|
||||
if (__ENV.RATE === undefined) {
|
||||
throw new Error('RATE must be defined');
|
||||
}
|
||||
const rate = parseInt(__ENV.RATE);
|
||||
return {
|
||||
scenarios: {
|
||||
load_test: {
|
||||
executor: 'constant-arrival-rate',
|
||||
gracefulStop: '0s',
|
||||
duration: duration,
|
||||
preAllocatedVUs: pre_allocated_vus,
|
||||
rate: rate,
|
||||
timeUnit: '1s',
|
||||
},
|
||||
},
|
||||
}
|
||||
;
|
||||
}
|
||||
|
||||
function get_constant_vus_options() {
|
||||
const duration = __ENV.DURATION;
|
||||
if (duration === undefined) {
|
||||
throw new Error('DURATION must be defined');
|
||||
}
|
||||
if (__ENV.VUS === undefined) {
|
||||
throw new Error('VUS must be defined');
|
||||
}
|
||||
const vus = parseInt(__ENV.VUS);
|
||||
return {
|
||||
scenarios: {
|
||||
load_test: {
|
||||
executor: 'constant-vus',
|
||||
gracefulStop: '0s',
|
||||
duration: duration,
|
||||
vus: vus,
|
||||
},
|
||||
},
|
||||
};
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
{% include 'main.js.j2' %}
|
||||
|
||||
export function get_options() {
|
||||
return {
|
||||
scenarios: {
|
||||
load_test: {
|
||||
executor: 'constant-arrival-rate',
|
||||
gracefulStop: '0s',
|
||||
duration: '{{ duration }}',
|
||||
preAllocatedVUs: {{ pre_allocated_vus }},
|
||||
rate: {{ rate }},
|
||||
timeUnit: '1s',
|
||||
},
|
||||
},
|
||||
};
|
||||
}
|
@ -1,14 +0,0 @@
|
||||
{% include 'main.js.j2' %}
|
||||
|
||||
export function get_options() {
|
||||
return {
|
||||
scenarios: {
|
||||
load_test: {
|
||||
executor: 'constant-vus',
|
||||
gracefulStop: '0s',
|
||||
duration: '{{ duration }}',
|
||||
vus: {{ vus }},
|
||||
},
|
||||
},
|
||||
};
|
||||
}
|
@ -1,20 +0,0 @@
|
||||
{% include 'main.js.j2' %}
|
||||
|
||||
export function get_options() {
|
||||
return {
|
||||
scenarios: {
|
||||
load_test: {
|
||||
executor: 'ramping-arrival-rate',
|
||||
gracefulStop: '0s',
|
||||
preAllocatedVUs: {{ pre_allocated_vus }},
|
||||
timeUnit: '{{ time_unit }}',
|
||||
startRate: {{ start_rate }},
|
||||
stages: [
|
||||
{%- for stage in stages %}
|
||||
{target: {{ stage.target }}, duration: '{{ stage.duration }}'},
|
||||
{%- endfor %}
|
||||
],
|
||||
},
|
||||
},
|
||||
};
|
||||
}
|
88
load_tests/poetry.lock
generated
88
load_tests/poetry.lock
generated
@ -396,23 +396,6 @@ files = [
|
||||
{file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "jinja2"
|
||||
version = "3.1.4"
|
||||
description = "A very fast and expressive template engine."
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
{file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"},
|
||||
{file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
MarkupSafe = ">=2.0"
|
||||
|
||||
[package.extras]
|
||||
i18n = ["Babel (>=2.7)"]
|
||||
|
||||
[[package]]
|
||||
name = "kiwisolver"
|
||||
version = "1.4.5"
|
||||
@ -544,75 +527,6 @@ win32-setctime = {version = ">=1.0.0", markers = "sys_platform == \"win32\""}
|
||||
[package.extras]
|
||||
dev = ["Sphinx (==7.2.5)", "colorama (==0.4.5)", "colorama (==0.4.6)", "exceptiongroup (==1.1.3)", "freezegun (==1.1.0)", "freezegun (==1.2.2)", "mypy (==v0.910)", "mypy (==v0.971)", "mypy (==v1.4.1)", "mypy (==v1.5.1)", "pre-commit (==3.4.0)", "pytest (==6.1.2)", "pytest (==7.4.0)", "pytest-cov (==2.12.1)", "pytest-cov (==4.1.0)", "pytest-mypy-plugins (==1.9.3)", "pytest-mypy-plugins (==3.0.0)", "sphinx-autobuild (==2021.3.14)", "sphinx-rtd-theme (==1.3.0)", "tox (==3.27.1)", "tox (==4.11.0)"]
|
||||
|
||||
[[package]]
|
||||
name = "markupsafe"
|
||||
version = "2.1.5"
|
||||
description = "Safely add untrusted strings to HTML/XML markup."
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
{file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"},
|
||||
{file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"},
|
||||
{file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"},
|
||||
{file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"},
|
||||
{file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"},
|
||||
{file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"},
|
||||
{file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"},
|
||||
{file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"},
|
||||
{file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"},
|
||||
{file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"},
|
||||
{file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"},
|
||||
{file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"},
|
||||
{file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"},
|
||||
{file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"},
|
||||
{file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"},
|
||||
{file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"},
|
||||
{file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"},
|
||||
{file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"},
|
||||
{file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"},
|
||||
{file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"},
|
||||
{file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"},
|
||||
{file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"},
|
||||
{file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"},
|
||||
{file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"},
|
||||
{file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"},
|
||||
{file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"},
|
||||
{file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"},
|
||||
{file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"},
|
||||
{file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"},
|
||||
{file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"},
|
||||
{file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"},
|
||||
{file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"},
|
||||
{file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"},
|
||||
{file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"},
|
||||
{file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"},
|
||||
{file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"},
|
||||
{file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"},
|
||||
{file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"},
|
||||
{file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"},
|
||||
{file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"},
|
||||
{file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"},
|
||||
{file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"},
|
||||
{file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"},
|
||||
{file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"},
|
||||
{file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"},
|
||||
{file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"},
|
||||
{file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"},
|
||||
{file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"},
|
||||
{file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"},
|
||||
{file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"},
|
||||
{file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"},
|
||||
{file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"},
|
||||
{file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"},
|
||||
{file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"},
|
||||
{file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"},
|
||||
{file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"},
|
||||
{file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"},
|
||||
{file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"},
|
||||
{file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"},
|
||||
{file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "matplotlib"
|
||||
version = "3.9.1"
|
||||
@ -1572,4 +1486,4 @@ dev = ["black (>=19.3b0)", "pytest (>=4.6.2)"]
|
||||
[metadata]
|
||||
lock-version = "2.0"
|
||||
python-versions = "^3.11"
|
||||
content-hash = "fa010523fc1b8c68319f79064436f0a308de0871614c195e63c21389a9155bac"
|
||||
content-hash = "823c3b6d4a884932bbf39eb32e9ccde6835807a98ea9f0e7f49d159ab272af41"
|
||||
|
@ -13,7 +13,6 @@ scienceplots = "^2.1.1"
|
||||
docker = "^7.1.0"
|
||||
loguru = "^0.7.2"
|
||||
psutil = "^6.0.0"
|
||||
jinja2 = "^3.1.4"
|
||||
transformers = "^4.42.3"
|
||||
gputil = "^1.4.0"
|
||||
tabulate = "^0.9.0"
|
||||
|
Loading…
Reference in New Issue
Block a user