Upload inference.py with huggingface_hub
Browse files- inference.py +6 -51
inference.py
CHANGED
|
@@ -345,29 +345,13 @@ def load_packed_model(path: str) -> SSMoELMPacked:
|
|
| 345 |
return model.eval()
|
| 346 |
|
| 347 |
|
| 348 |
-
USER_ID = 4
|
| 349 |
-
ASSISTANT_ID = 5
|
| 350 |
-
|
| 351 |
-
|
| 352 |
-
def build_chat_prompt(tok: Tokenizer, history: list[tuple[str, str]],
|
| 353 |
-
user_input: str) -> list[int]:
|
| 354 |
-
"""δΌθ©±ε±₯ζ΄ + ζ°γγγ¦γΌγΆγΌε
₯ε β γγΌγ―γ³ε (instruct γ’γγ«η¨)"""
|
| 355 |
-
ids = [BOS_ID]
|
| 356 |
-
for user_turn, assistant_turn in history:
|
| 357 |
-
ids += [USER_ID] + tok.encode("\n" + user_turn).ids + [EOT_ID]
|
| 358 |
-
ids += [ASSISTANT_ID] + tok.encode("\n" + assistant_turn).ids + [EOT_ID]
|
| 359 |
-
ids += [USER_ID] + tok.encode("\n" + user_input).ids + [EOT_ID, ASSISTANT_ID]
|
| 360 |
-
return ids[-CTX_LEN:]
|
| 361 |
-
|
| 362 |
-
|
| 363 |
# ββ CLI βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 364 |
|
| 365 |
def main():
|
| 366 |
parser = argparse.ArgumentParser()
|
| 367 |
parser.add_argument("--ckpt", default="model.safetensors", help="Path to packed safetensors")
|
| 368 |
parser.add_argument("--tokenizer", default="tokenizer.json", help="Path to tokenizer.json")
|
| 369 |
-
parser.add_argument("--prompt", default=
|
| 370 |
-
parser.add_argument("--chat", action="store_true", help="Interactive chat mode (instruct models)")
|
| 371 |
parser.add_argument("--max-tokens", type=int, default=200, help="Max new tokens to generate")
|
| 372 |
parser.add_argument("--temperature", type=float, default=0.8, help="Sampling temperature")
|
| 373 |
parser.add_argument("--top-p", type=float, default=0.9, help="Top-p nucleus sampling")
|
|
@@ -380,40 +364,11 @@ def main():
|
|
| 380 |
print(f"Memory: {packed_bytes/1024/1024:.1f} MB")
|
| 381 |
|
| 382 |
tok = Tokenizer.from_file(args.tokenizer)
|
| 383 |
-
|
| 384 |
-
|
| 385 |
-
|
| 386 |
-
|
| 387 |
-
|
| 388 |
-
history: list[tuple[str, str]] = []
|
| 389 |
-
while True:
|
| 390 |
-
try:
|
| 391 |
-
user_input = input("\nYou: ").strip()
|
| 392 |
-
except (EOFError, KeyboardInterrupt):
|
| 393 |
-
break
|
| 394 |
-
if not user_input:
|
| 395 |
-
continue
|
| 396 |
-
if user_input.lower() == "exit":
|
| 397 |
-
break
|
| 398 |
-
if user_input.lower() == "clear":
|
| 399 |
-
history.clear()
|
| 400 |
-
print("--- history cleared ---")
|
| 401 |
-
|
| 402 |
-
continue
|
| 403 |
-
ids = build_chat_prompt(tok, history, user_input)
|
| 404 |
-
print("Assistant: ", end="", flush=True)
|
| 405 |
-
out = model.generate(ids, args.max_tokens, args.temperature, args.top_p)
|
| 406 |
-
response = tok.decode(out).strip()
|
| 407 |
-
print(response)
|
| 408 |
-
history.append((user_input, response))
|
| 409 |
-
else:
|
| 410 |
-
# Single-shot mode (default)
|
| 411 |
-
prompt = args.prompt or "The quick brown fox"
|
| 412 |
-
ids = [BOS_ID] + tok.encode(prompt).ids
|
| 413 |
-
print(f"\nPrompt: {prompt}")
|
| 414 |
-
print("Output: ", end="", flush=True)
|
| 415 |
-
out = model.generate(ids, args.max_tokens, args.temperature, args.top_p)
|
| 416 |
-
print(tok.decode(out))
|
| 417 |
|
| 418 |
|
| 419 |
if __name__ == "__main__":
|
|
|
|
| 345 |
return model.eval()
|
| 346 |
|
| 347 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 348 |
# ββ CLI βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
| 349 |
|
| 350 |
def main():
|
| 351 |
parser = argparse.ArgumentParser()
|
| 352 |
parser.add_argument("--ckpt", default="model.safetensors", help="Path to packed safetensors")
|
| 353 |
parser.add_argument("--tokenizer", default="tokenizer.json", help="Path to tokenizer.json")
|
| 354 |
+
parser.add_argument("--prompt", default="The quick brown fox", help="Text prompt")
|
|
|
|
| 355 |
parser.add_argument("--max-tokens", type=int, default=200, help="Max new tokens to generate")
|
| 356 |
parser.add_argument("--temperature", type=float, default=0.8, help="Sampling temperature")
|
| 357 |
parser.add_argument("--top-p", type=float, default=0.9, help="Top-p nucleus sampling")
|
|
|
|
| 364 |
print(f"Memory: {packed_bytes/1024/1024:.1f} MB")
|
| 365 |
|
| 366 |
tok = Tokenizer.from_file(args.tokenizer)
|
| 367 |
+
ids = [BOS_ID] + tok.encode(args.prompt).ids
|
| 368 |
+
print(f"\nPrompt: {args.prompt}")
|
| 369 |
+
print("Output: ", end="", flush=True)
|
| 370 |
+
out = model.generate(ids, args.max_tokens, args.temperature, args.top_p)
|
| 371 |
+
print(tok.decode(out))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 372 |
|
| 373 |
|
| 374 |
if __name__ == "__main__":
|