MCPcopy Create free account
hub / github.com/appdevforall/CodeOnTheGo / benchmark

Function benchmark

subprojects/llama.cpp/scripts/server-bench.py:147–271  ·  view source on GitHub ↗
(
        path_server: str, path_log: Optional[str], path_db: Optional[str], name: Optional[str], prompt_source: str, n_prompts: int,
        n_predict: int, n_predict_min: int, seed_offset: int)

Source from the content-addressed store, hash-verified

145
146
147def benchmark(
148 path_server: str, path_log: Optional[str], path_db: Optional[str], name: Optional[str], prompt_source: str, n_prompts: int,
149 n_predict: int, n_predict_min: int, seed_offset: int):
150 external_server: bool = path_server.startswith("http://") or path_server.startswith("https://")
151 if os.environ.get("LLAMA_ARG_N_PARALLEL") is None:
152 logger.info("LLAMA_ARG_N_PARALLEL not explicitly set, using 32")
153 os.environ["LLAMA_ARG_N_PARALLEL"] = "32"
154
155 parallel: int = int(os.environ.get("LLAMA_ARG_N_PARALLEL")) # type: ignore
156 prompts: Union[None, list[str], list[list[int]]] = get_prompts_text(prompt_source, n_prompts)
157 synthetic_prompts: bool = prompts is None
158 prompt_n = []
159
160 if synthetic_prompts:
161 prompt_source_split: list[str] = prompt_source.split("-")
162 assert len(prompt_source_split) == 3
163 assert prompt_source_split[0].lower() == "rng"
164 prompt_length_min: int = int(prompt_source_split[1])
165 prompt_length_max: int = int(prompt_source_split[2])
166 logger.info("Generating random prompts...")
167 prompt_n = get_prompt_lengths_rng(n_prompts, prompt_length_min, prompt_length_max, seed_offset)
168 prompts = get_prompts_rng(prompt_n)
169 else:
170 n_predict_min = n_predict
171
172 if not external_server and os.environ.get("LLAMA_ARG_CTX_SIZE") is None:
173 context_per_slot: int = int(1.05 * (n_predict + (np.max(prompt_n) if synthetic_prompts else 2048)))
174 context_total: int = context_per_slot * parallel
175 os.environ["LLAMA_ARG_CTX_SIZE"] = str(context_total)
176 logger.info(f"LLAMA_ARG_CTX_SIZE not explicitly set, using {context_total} ({context_per_slot} per slot).")
177
178 server: Optional[dict] = None
179 session = None
180 try:
181 server = get_server(path_server, path_log)
182 server_address: str = server["address"]
183 assert external_server == (server["process"] is None)
184
185 adapter = requests.adapters.HTTPAdapter(pool_connections=parallel, pool_maxsize=parallel) # type: ignore
186 session = requests.Session()
187 session.mount("http://", adapter)
188 session.mount("https://", adapter)
189
190 data: list[dict] = []
191
192 for i, p in enumerate(prompts):
193 if seed_offset >= 0:
194 random.seed(3 * (seed_offset + 1000 * i) + 1)
195 data.append({
196 "session": session, "server_address": server_address, "external_server": external_server, "prompt": p,
197 "synthetic_prompt": synthetic_prompts, "n_predict": random.randint(n_predict_min, n_predict),
198 "seed": (3 * (seed_offset + 1000 * i) + 2) if seed_offset >= 0 else -1})
199
200 if not synthetic_prompts:
201 logger.info("Getting the prompt lengths...")
202 prompt_n = [get_prompt_length(d) for d in data]
203
204 logger.info("Starting the benchmark...\n")

Callers 1

server-bench.pyFile · 0.85

Calls 15

get_prompts_textFunction · 0.85
get_prompt_lengths_rngFunction · 0.85
get_prompts_rngFunction · 0.85
get_serverFunction · 0.85
get_prompt_lengthFunction · 0.85
arrayMethod · 0.80
sumMethod · 0.80
getMethod · 0.65
splitMethod · 0.65
appendMethod · 0.65
closeMethod · 0.65
infoMethod · 0.45

Tested by

no test coverage detected