Spaces:
Running on Zero
Running on Zero
Abdullah Khan Kakar
feat: PDF URL input for topic extraction, title generation, fix parse_json for objects
0705f93 | from transformers import AutoTokenizer | |
| from transformers import AutoModelForCausalLM | |
| import torch | |
| CHECKPOINT = "HuggingFaceTB/SmolLM2-1.7B-Instruct" | |
| _model = None | |
| _tokenizer = None | |
| try: | |
| import spaces | |
| IS_SPACES = True | |
| except ImportError: | |
| IS_SPACES = False | |
| def _load_model(device): | |
| global _model, _tokenizer | |
| if _model is None: | |
| _tokenizer = AutoTokenizer.from_pretrained(CHECKPOINT) | |
| _model = AutoModelForCausalLM.from_pretrained(CHECKPOINT).to(device) | |
| def _generate(prompt, device): | |
| _load_model(device) | |
| messages = [{"role": "user", "content": prompt}] | |
| chat = _tokenizer.apply_chat_template(messages, tokenize=False) | |
| inputs = _tokenizer(chat, return_tensors="pt").to(device) | |
| input_len = inputs["input_ids"].shape[1] | |
| outputs = _model.generate( | |
| **inputs, | |
| max_new_tokens=2048, | |
| temperature=0.2, | |
| top_p=0.9, | |
| do_sample=True, | |
| pad_token_id=_tokenizer.eos_token_id | |
| ) | |
| generated_tokens = outputs[0][input_len:] | |
| response = _tokenizer.decode(generated_tokens, skip_special_tokens=True).strip() | |
| print(response) | |
| return response | |
| if IS_SPACES: | |
| def generate(prompt): | |
| return _generate(prompt, "cuda") | |
| else: | |
| def generate(prompt): | |
| device = "cuda" if torch.cuda.is_available() else "cpu" | |
| return _generate(prompt, device) | |