{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Text generation with CzeGPT-2\n", "Download all the files from the CzeGPT-2 Hugging Face repository and place `vocab.json` and `merges.txt` into one folder and `pytorch_model.bin` and `config.json` into another. \n", "\n", "Provide path to these folders later in the code." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from transformers import GPT2TokenizerFast, GPT2LMHeadModel" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# load model\n", "model_path = \"path/to/folder/with/model/and/config/files\"\n", "\n", "model = GPT2LMHeadModel.from_pretrained(model_path)\n", "\n", "# put model into eval mode and on device\n", "device = 'cuda' # 'cpu' alternatively\n", "model.eval();\n", "model.to(device)\n", "\n", "# load tokenizer\n", "tokenizer_path = \"path/to/folder/with/vocab/and/merges/files\"\n", "\n", "tokenizer = GPT2TokenizerFast.from_pretrained(tokenizer_path, pad_token='<|endoftext|>')" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "# input\n", "prompt = \"Začátek na který chcete navázat\"\n", "input_ids = tokenizer.encode(prompt, return_tensors='pt').to('cuda')" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ ">> Generated text 1\n", "\n", "Začátek na který chcete navázat. Na začátku si zvolíte téma a po krátkém hledání odpovědí se rozhodnete co dál. Za pár sekund je k dispozici další volba pro pokračování hry / mise. Po kliknutí se dostanete do hlavního menu. V něm je pro vás ještě několik voleb. Můžete si vybrat z více možností. Můžete si nastavit název mise, čas začátku hry, čas spuštění kampaně (v závislosti na zemi, ve které se hra odehrává / v USA a Německu). Poté si zvolíte způsob, jakým se do hry zapojí váš kamarád. Toto je jedna z voleb, kterou máte zvolit. Můžete hrát i ve více lidech, což zvyšuje herní zážitek. Při výběru se můžete stát součástí týmu spolu s kamarádem nebo můžete hrát samostatně. Jakožto hráč jste si sami vybráni, můžete začít s tréninkem, pokud chcete tak se můžete stát\n", "\n", "---\n", ">> Generated text 2\n", "\n", "Začátek na který chcete navázat byla nová postava z anime. Příběh je prostý - Colin, O 'Brien a jeho společníci se chtějí dostat na palubu Colina a to má za důsledek i smrt Colina a jeho přátel, kteří s ním souhlasí, dokud na tuto situaci nedojde... Do této kategorie spadají i tzv. superhrdina, který si říká Colin a také je na cestě na palubu lodi Colinova přítele Colina. Na první pohled vypadají tato jména zajímavě, ale po chvíli zkoumání zjistíte, že vlastně není co řešit.. Colin se v poslední době příliš nezabývá svojí minulostí, což je způsobeno především faktem, že se po jeho smrti stává Colin jeho přítelkyní, kvůli které se rozhodl, že bude žít s Alekim, což znamená, že se stal Anitou\n", "\n", "---\n", ">> Generated text 3\n", "\n", "Začátek na který chcete navázat je změna na již zavedený obor a jeho zařazení do jiného oboru. Při hledání a volbě oboru si můžete vybrat ze základních, ale i doplňkových. Chcete -li se odlišit od konkurence, můžete si vybrat obor, který je vám bližší. Název obor: Stavební výroba - základní zaměření, případně doplňkové specializace. Pokud se nechcete vzdát specializovaného oboru, pak si můžete vybrat některou ze základních stavebních specializací. Pokud se rozhodnete pro práci v oboru, pak se zaměřte pouze na stavebnictví. Pokud budete chtít vydělávat peníze, tak si můžete vybrat specializaci stavebního zaměření. Pokud budete ve svém oboru zaměstnávat pracovníky, kteří vykonávají práce ve výkopech, nebo chcete vydělávat peníze, tak si můžete vybrat specializaci stavebního zaměření s názvem Stavební práce, popř. Stavební služby, protože se nejedná o stejné\n", "\n", "---\n", "CPU times: user 4.45 s, sys: 1.26 s, total: 5.71 s\n", "Wall time: 53.4 s\n" ] } ], "source": [ "%%time\n", "max_length = 160\n", "min_length = 50\n", "sample_outputs = model.generate(input_ids, pad_token_id=0,\n", " do_sample=True, \n", " max_length=max_length, \n", " min_length=max_length,\n", " top_k=50,\n", " num_return_sequences=3)\n", "\n", "for i, sample_output in enumerate(sample_outputs):\n", " print(\">> Generated text {}\\n\\n{}\".format(i+1, tokenizer.decode(sample_output.tolist())))\n", " print('\\n---')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" } }, "nbformat": 4, "nbformat_minor": 4 }