Spaces:
Build error
Build error
| import streamlit as st | |
| from transformers import GPT2LMHeadModel, GPT2Tokenizer | |
| from safetensors import safe_open | |
| # Функция для загрузки весов модели из файла safetensors | |
| def load_model_weights(model, safetensors_path): | |
| with safe_open(safetensors_path, framework="pt", device="cpu") as f: | |
| for key in f.keys(): | |
| if key in model.state_dict(): | |
| try: | |
| model.state_dict()[key].copy_(f.get_tensor(key)) | |
| except RuntimeError as e: | |
| print(f"Error copying key {key}: {e}") | |
| return model | |
| # Загрузка токенизатора GPT-2 | |
| tokenizer = GPT2Tokenizer.from_pretrained("sberbank-ai/rugpt3small_based_on_gpt2") | |
| # Добавление специального токена для заполнения | |
| tokenizer.add_special_tokens({'pad_token': '[PAD]'}) | |
| # Загрузка модели GPT-2 | |
| model = GPT2LMHeadModel.from_pretrained("sberbank-ai/rugpt3small_based_on_gpt2") | |
| # Изменение размера токенов в модели после добавления специального токена | |
| model.resize_token_embeddings(len(tokenizer)) | |
| # Загрузка весов из safetensors | |
| model = load_model_weights(model, "models/model_lenin_zametki.safetensors") | |
| # Streamlit приложение | |
| def generate_text(prompt, length, num_generations, temperature, top_k, top_p): | |
| inputs = tokenizer.encode(prompt, return_tensors="pt") | |
| outputs = [] | |
| for _ in range(num_generations): | |
| output = model.generate( | |
| inputs, | |
| max_length=length, | |
| temperature=temperature, | |
| top_k=top_k, | |
| top_p=top_p, | |
| num_return_sequences=1 | |
| ) | |
| text = tokenizer.decode(output[0], skip_special_tokens=True) | |
| outputs.append(text) | |
| return outputs |