import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, TextIteratorStreamer, StoppingCriteria, StoppingCriteriaList
from threading import Thread
# Загрузка модели и токенизатора
checkpoint_path = "Vladniag/Bormokrut"
model = AutoModelForCausalLM.from_pretrained(
checkpoint_path,
device_map="cuda",
torch_dtype=torch.float16
)
tokenizer = AutoTokenizer.from_pretrained(checkpoint_path, use_fast=True)
if tokenizer.pad_token isNone:
tokenizer.pad_token = tokenizer.eos_token
# Настройка стоп-словclassStopOnTokens(StoppingCriteria):
def__init__(self, stop_token_ids_list):
self.stop_token_ids_list = stop_token_ids_list
def__call__(self, input_ids: torch.LongTensor, scores: torch.FloatTensor, **kwargs) -> bool:
for stop_ids in self.stop_token_ids_list:
iflen(input_ids[0]) >= len(stop_ids):
if input_ids[0][-len(stop_ids):].tolist() == stop_ids:
returnTruereturnFalse
stop_words = ["</result>"]
stop_ids_list = [tokenizer.encode(word, add_special_tokens=False) for word in stop_words]
stopping_criteria = StoppingCriteriaList([StopOnTokens(stop_ids_list)])
# Функция генерацииdefgenerate_response(prompt):
processed_input = "▁" + prompt.lstrip().replace(" ", "▁").replace("\n", "<newline>")
inputs = tokenizer(
processed_input,
return_tensors="pt",
add_special_tokens=False,
).to(model.device)
streamer = TextIteratorStreamer(tokenizer, skip_prompt=True, skip_special_tokens=False)
generation_kwargs = dict(
inputs,
streamer=streamer,
max_new_tokens=256,
do_sample=True,
temperature=0.3,
top_p=0.5,
repetition_penalty=1.3,
pad_token_id=tokenizer.pad_token_id,
eos_token_id=tokenizer.eos_token_id,
stopping_criteria=stopping_criteria
)
thread = Thread(target=model.generate, kwargs=generation_kwargs)
thread.start()
full_response = ""for new_text in streamer:
decoded_chunk = new_text.replace("▁", " ").replace("<newline>", "\n").replace("\\n", "\n")
if"</result>"in decoded_chunk:
print(decoded_chunk.split("</result>")[0], end="", flush=True)
breakprint(decoded_chunk, end="", flush=True)
print()
# Пример использования
prompt = """<instruction>extract</instruction><fragment>Не одному Перуну предназначались почести, но всем «кумирам» без исключения. «И жряху им, наричюще я богы, и привожаху сыны своя и дъщери, и жряху бесом, и оскверняху землю требами своими». Приведенный летописный отрывок чрезвычайно интересен для понимания внутреннего развития восточнославянского язычества на стадии политеизма. Божества других племен и народов не отрицаются, не подчиняются, не становятся второстепенными по отношению к Перуну, а, наоборот, признаются существующими и самостоятельными. Главный бог – только сильнее и могущественнее остальных, он их счастливый соперник, победитель при столкновениях.</fragment><result>"""
generate_response(prompt)
Примеры работы
Задача: извлечение (extract)
Входной текст:
Не одному Перуну предназначались почести, но всем «кумирам» без исключения. «И жряху им, наричюще я богы, и привожаху сыны своя и дъщери, и жряху бесом, и оскверняху землю требами своими». Приведенный летописный отрывок чрезвычайно интересен для понимания внутреннего развития восточнославянского язычества на стадии политеизма. Божества других племен и народов не отрицаются, не подчиняются, не становятся второстепенными по отношению к Перуну, а, наоборот, признаются существующими и самостоятельными. Главный бог – только сильнее и могущественнее остальных, он их счастливый соперник, победитель при столкновениях.
Результат:
Entity: Перун
Aspects: боги; роль в мифологии; связь с другими божествами; социальная структура
Question: Какова роль и значение богов в древнерусском язычестве, согласно летописи?
Задача: маршрутизация (route)
Входной вопрос:
Какие нарушения функций печени связаны со злоупотреблением алкоголем?
Результат:
Route: медик
Входной вопрос:
Каково значение Духа в контексте Троицы и Его роли в мире?
Bormokrut huggingface.co is an AI model on huggingface.co that provides Bormokrut's model effect (), which can be used instantly with this Vladniag Bormokrut model. huggingface.co supports a free trial of the Bormokrut model, and also provides paid use of the Bormokrut. Support call Bormokrut model through api, including Node.js, Python, http.
Bormokrut huggingface.co is an online trial and call api platform, which integrates Bormokrut's modeling effects, including api services, and provides a free online trial of Bormokrut, you can try Bormokrut online for free by clicking the link below.
Vladniag Bormokrut online free url in huggingface.co:
Bormokrut is an open source model from GitHub that offers a free installation service, and any user can find Bormokrut on GitHub to install. At the same time, huggingface.co provides the effect of Bormokrut install, users can directly use Bormokrut installed effect in huggingface.co for debugging and trial. It also supports api for free installation.