lilo / chat_lilo.py
hzlo0's picture
lilo-100m: fp16 + group-wise int8 CPU release
36a88b2 verified
Raw History Blame Contribute Delete
1.74 kB
#!/usr/bin/env python3
"""LILO chat CLI — CPU-optimized, KV-cache generation.
Usage:
python chat_lilo.py "prompt" # single prompt
python chat_lilo.py # interactive
python chat_lilo.py --temp 0.7 --top-p 0.9 --max 200 "prompt"
"""
import argparse, os, sys
HERE = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, HERE)
from lilo_common import load_lilo, generate_lilo
def main():
ap = argparse.ArgumentParser()
ap.add_argument("prompt", nargs="*")
ap.add_argument("--variant", default="fp16", choices=["fp16", "int8"])
ap.add_argument("--max", type=int, default=200)
ap.add_argument("--temp", type=float, default=0.7)
ap.add_argument("--top-p", type=float, default=0.9)
ap.add_argument("--rep", type=float, default=1.1)
ap.add_argument("--threads", type=int, default=1)
ap.add_argument("--path", default=HERE)
a = ap.parse_args()
tok, model = load_lilo(a.path, variant=a.variant, threads=a.threads)
def run(prompt):
ids = tok.encode(prompt, add_special_tokens=False)
out = generate_lilo(model, tok, ids, max_new_tokens=a.max, temperature=a.temp,
top_p=a.top_p, repetition_penalty=a.rep, stream=True)
return tok.decode(out, skip_special_tokens=True)
if a.prompt:
run(" ".join(a.prompt))
print()
return
print("LILO siap. Ketik pesan (Ctrl-C/Ctrl-D untuk keluar).")
while True:
try:
p = input("\n> ").strip()
except (EOFError, KeyboardInterrupt):
print()
break
if not p:
continue
run(p)
print()
if __name__ == "__main__":
main()