| import zlib | |
| import gradio as gr | |
| import gptzip | |
| import transformers | |
| model = "EleutherAI/pythia-410m" | |
| lm = transformers.AutoModelForCausalLM.from_pretrained(model) | |
| tokenizer = transformers.AutoTokenizer.from_pretrained(model) | |
| coder = gptzip.ArithmeticCoder(lm=lm, tokenizer=tokenizer) | |
| def compress(string: str) -> str: | |
| code, num_padded_bits = coder.encode( | |
| string, | |
| return_num_padded_bits=True, | |
| ) | |
| gzip_str = zlib.compress(string.encode()) | |
| gzip_bytes = len(gzip_str) | |
| return f"Num tokens {len(tokenizer.encode(string))} || GZ: {gzip_bytes} bytes: {gzip_str} || AC: {len(code)} bytes: {code}" | |
| demo = gr.Interface(fn=compress, inputs="text", outputs="text") | |
| demo.launch() | |