heegyu's picture
st.cache()
98103c0
import streamlit as st
@st.cache(allow_output_mutation=True)
def get_pipe():
from transformers import AutoTokenizer, AutoModelForCausalLM
model_name = "heegyu/ajoublue-gpt2-medium-summarization"
tokenizer = AutoTokenizer.from_pretrained(model_name)
tokenizer.truncation_side = "right"
model = AutoModelForCausalLM.from_pretrained(model_name)
return model, tokenizer
def get_response(tokenizer, model, context):
context = f"๋‚ด์šฉ: {context}\n์š”์•ฝ: "
inputs = tokenizer(
context,
truncation=True,
max_length=800,
return_tensors="pt")
generation_args = dict(
max_new_tokens=128,
min_length=inputs["input_ids"].shape[1] + 5,
eos_token_id=2,
do_sample=False,
num_beams=4,
early_stopping=True
)
outputs = model.generate(**inputs, **generation_args)
response = tokenizer.decode(outputs[0])
print(context)
print(response)
response = response[len(context):].replace("</s>", "")
return response
st.title("ํ•œ๊ตญ์–ด ์š”์•ฝ ๋ชจ๋ธ demo")
with st.spinner("loading model..."):
model, tokenizer = get_pipe()
input_ = st.text_area("์š”์•ฝํ•  ๋ฌธ์žฅ์„ ์ž…๋ ฅํ•˜์„ธ์š”", value="๋ฏธ๊ตญ๊ณผ ์ค‘๊ตญ์˜ ๊ฐˆ๋“ฑ์ด ๊ณณ๊ณณ์—์„œ ๋ถˆ๊ฑฐ์ง€๊ณ  ์žˆ๋‹ค.\n๋‚จ์ค‘๊ตญํ•ด์—์„  ๋ฌด๋ ฅ ์ถฉ๋Œ๋งˆ์ € ๋ฒŒ์–ด์งˆ ๊ธฐ์„ธ๋‹ค.\n์ด๋Ÿฐ ๊ฐˆ๋“ฑ์„ ํ‹ˆํƒ€ '๋„ฅ์ŠคํŠธ ์ฐจ์ด๋‚˜'๋ฅผ ๊ฟˆ๊พธ๋Š” ๋‚˜๋ผ๋“ค์˜ ์›€์ง์ž„๋„ ๋นจ๋ผ์ง€๊ณ  ์žˆ๋‹ค.\n๊ฐ€์žฅ ๋ˆˆ์— ๋„๋Š” ๊ณณ์€ ๋ฒ ํŠธ๋‚จ์ด๋‹ค.\n๋ช‡ ๋…„ ์ „๋ถ€ํ„ฐ '๋„ฅ์ŠคํŠธ ์ฐจ์ด๋‚˜'๋กœ ๋ถ€์ƒํ•ด ์˜จ ๋ฒ ํŠธ๋‚จ์€ ๋ฏธ์ค‘ ๋ฌด์—ญ์ „์Ÿ์˜ ์ตœ๋Œ€ ์ˆ˜ํ˜œ๊ตญ ์ค‘ ํ•˜๋‚˜๋กœ ๊ผฝํžˆ๋Š” ๊ณณ์ด๋‹ค.\n ์• ํ”Œ์ด ๋ฒ ํŠธ๋‚จ์œผ๋กœ ์ƒ์‚ฐ๊ณต์žฅ์„ ์˜ฎ๊ธฐ๊ณ  ์žˆ๊ณ  LG์ „์ž, ํ€„์ปด ๋“ฑ ๋‹ค๋ฅธ ๊ธ€๋กœ๋ฒŒ ๊ธฐ์—…๋“ค๋„ ๊ฐ€์„ธํ•˜๊ณ  ์žˆ๋‹ค.\n๋ฌด์—‡๋ณด๋‹ค ํ™œ๊ธฐ๋ฅผ ๋งž์€ ๊ฑด ์˜๋ฅ˜์‚ฐ์—…์ด๋‹ค.\n์‚ฌ์šฐ์Šค์ฐจ์ด๋‚˜๋ชจ๋‹ํฌ์ŠคํŠธ(SCMP)๋Š” ์ตœ๊ทผ ๋ณด๋„์—์„œ \"๋ช‡ ๊ฐœ์›” ์ „๊นŒ์ง€๋งŒ ํ•ด๋„ ๋ฏธ๊ตญ์— ์˜๋ฅ˜ ์ œํ’ˆ์„ ๊ฐ€์žฅ ๋งŽ์ด ์ˆ˜์ถœํ•˜๋Š” ๋‚˜๋ผ๋Š” ์ค‘๊ตญ์ด์—ˆ์ง€๋งŒ, ๋ฒ ํŠธ๋‚จ์ด ๋น ๋ฅด๊ฒŒ ์น˜๊ณ  ์˜ฌ๋ผ์˜ค๊ณ  ์žˆ๋‹ค\"๊ณ  ์„ค๋ช…ํ–ˆ๋‹ค.\n์ค‘๊ตญ ์ œํ’ˆ์ด ์—ฌ์ „ํžˆ ์ œ์ผ ์ž˜ ํŒ”๋ฆฌ๊ณ ๋Š” ์žˆ์ง€๋งŒ \"์‚ด์•„๋‚จ๊ธฐ ์œ„ํ•œ ๋ชธ๋ถ€๋ฆผ\"์œผ๋กœ ๊ฐ€๊ฒฉ์„ ํฌ๊ฒŒ ๋‚ฎ์ถ˜ ํƒ“์ด๋ž€ ๋ถ„์„์ด๋‹ค.\n๋ฒ ํŠธ๋‚จ์˜ ๊ฒฝ์Ÿ๋ ฅ์€ ์ ์  ๋” ์ปค์งˆ ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค.\n์œ ๋Ÿฝ์—ฐํ•ฉ(EU)๊ณผ ์ž์œ ๋ฌด์—ญํ˜‘์ •(8์›” ๋ฐœํšจ)์„ ๋งบ์€ ๋ฐ๋‹ค, ์™ธ๊ตญ์ธ ์ง์ ‘ ํˆฌ์ž๋„ ๊ธ‰์†ํžˆ ๋Š˜๊ณ  ์žˆ์–ด์„œ๋‹ค.\n์ด ๋‚˜๋ผ์˜ ์ตœ๋Œ€ ๊ฐ•์ ์€ ์ Š์€ ์ธ๊ตฌ๊ฐ€ ๋งŽ๊ณ  ๋ฏธ๊ตญ๊ณผ ์šฐํ˜ธ์ ์ธ ๊ด€๊ณ„๋ฅผ ๋งบ๊ณ  ์žˆ๋‹จ ์ ์ด๋‹ค.\n ์ •์น˜์ ์œผ๋กœ๋„ ๋น„๊ต์  ์•ˆ์ •๋ผ ์žˆ๋‹ค.\n ๋ฏธ์ค‘ ๊ฐˆ๋“ฑ์ด ๋ณธ๊ฒฉํ™”ํ•œ ์ง€๋‚œํ•ด๋ถ€ํ„ฐ \"๋ฒ ํŠธ๋‚จ์ด ํ™ฉ๊ธˆ๊ธฐ๋ฅผ ๋งž๊ณ  ์žˆ๋‹ค\"(์›Œ์‹ฑํ„ดํฌ์ŠคํŠธ)๋Š” ๋ถ„์„์ด ๋‚˜์˜จ ์ด์œ ๋‹ค.\n๋˜ ๋‹ค๋ฅธ ์•„์‹œ์•„ ๊ตญ๊ฐ€ ์ธ๋„๋„ ์ด ๊ธฐํšŒ๋ฅผ ๋†“์น˜์ง€ ์•Š์œผ๋ ค ํ•œ๋‹ค.\n๊ตญ๊ฒฝ ๋ฌธ์ œ๋กœ ์ค‘๊ตญ๊ณผ ๊ฐˆ๋“ฑ์„ ๋นš๊ณ  ์žˆ๋Š” ์ธ๋„๋Š” ๊ฑฐ๋Œ€ํ•œ ์ž๊ตญ ์‹œ์žฅ์„ ๋ฌด๊ธฐ๋กœ ์ค‘๊ตญ ๊ธฐ์—…๋“ค์„ ์••๋ฐ•ํ•˜๋Š” ํ•œํŽธ, ์ด์ฐธ์— '๋„ฅ์ŠคํŠธ ์ฐจ์ด๋‚˜' ์ž๋ฆฌ๋„ ๊ฟฐ์ฐจ๊ฒ ๋‹จ ์•ผ์‹ฌ์„ ๋‚ด๋ณด์ด๊ณ  ์žˆ๋‹ค.\n์ตœ๊ทผ ํ•œ๊ตญ์€ํ–‰์€ ๋ณด๊ณ ์„œ๋ฅผ ๋‚ด๊ณ  \"๋ฏธ๊ตญ๊ณผ์˜ ๊ณต์กฐ๊ฐ€ ๊ฐ•ํ™”ํ• ์ˆ˜๋ก ์ธ๋„์˜ ๊ธ€๋กœ๋ฒŒ ์ƒ์‚ฐ๊ธฐ์ง€ ์—ญํ• ์€ ๋”์šฑ ์ปค์งˆ ๊ฒƒ\"์ด๋ผ๊ณ  ๋ถ„์„ํ–ˆ๋‹ค.\n ์ค‘๊ตญ๋ณด๋‹ค ๋‚ฎ์€ ์ธ๊ฑด๋น„ ๋“ฑ์„ ๋‚ด์„ธ์›Œ '์„ธ๊ณ„์˜ ๊ณต์žฅ'์„ ๋…ธ๋ฆฌ๊ณ  ์žˆ๋‹จ ์–˜๊ธฐ๋‹ค.\n๊ฐ€์žฅ ์ด๋ชฉ์„ ๋„๋Š” ๊ฑด ๊ธ€๋กœ๋ฒŒ IT ๊ธฐ์—…๋“ค๊ณผ์˜ ํ˜‘๋ ฅ์ด๋‹ค.\n์ตœ๊ทผ ๊ตฌ๊ธ€์ด ์ธ๋„์— 100์–ต ๋‹ฌ๋Ÿฌ(์•ฝ 12์กฐ ์›) ํˆฌ์ž ๊ณ„ํš์„ ๋ฐํ˜”๊ณ , ์•„๋งˆ์กด๊ณผ ํ€„์ปด, ํŽ˜์ด์Šค๋ถ๋„ ์ธ๋„์— ํˆฌ์ž๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋‹ค.\n์ค‘๊ตญ๊ณผ ๊ฐ€๊นŒ์šด ์•„์‹œ์•„ ๊ตญ๊ฐ€๋“ค๋งŒ ์ด๋Ÿฐ ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.\n๋ฏธ๊ตญ๊ณผ ์ด์›ƒํ•œ ์ค‘๋ฏธ ๊ตญ๊ฐ€ ๋ฉ•์‹œ์ฝ”๋Š” ๋ฏธ์ค‘ ๋ฌด์—ญ์ „์Ÿ์ด ์‹œ์ž‘๋  ๋•Œ๋ถ€ํ„ฐ '๋„ฅ์ŠคํŠธ ์ฐจ์ด๋‚˜'๋ฅผ ๋…ธ๋ ค์˜จ ๊ตญ๊ฐ€๋‹ค.\n์ตœ๊ทผ ๋กœ์ดํ„ฐํ†ต์‹ ์€ \"์•„์ดํฐ ๋“ฑ์„ ์œ„ํƒ ์ƒ์‚ฐํ•˜๋Š” ๋Œ€๋งŒ ํญ์Šค์ฝ˜๊ณผ ํŽ˜๊ฐ€ํŠธ๋ก ์ด ๋ฉ•์‹œ์ฝ”์— ๊ณต์žฅ์„ ์ง“๋Š” ์ผ์„ ๊ฒ€ํ† ํ•˜๊ณ  ์žˆ๋‹ค\"๊ณ  ๋‹จ๋… ๋ณด๋„ํ–ˆ๋‹ค.\nํญ์Šค์ฝ˜์€ ์ค‘๊ตญ ์ฒญ๋‘, ์„ ์ „ ๋“ฑ์— ๊ณต์žฅ์„ ๋‘๊ณ  130๋งŒ ๋ช…์„ ๊ณ ์šฉํ•˜๊ณ  ์žˆ๋Š” ์—…์ฒด๋‹ค.")
ok = st.button("์š”์•ฝํ•˜๊ธฐ")
if input_ is not None and ok and len(input_) > 0:
with st.spinner("์š”์•ฝ์„ ์ƒ์„ฑ์ค‘์ž…๋‹ˆ๋‹ค..."):
response = get_response(tokenizer, model, input_)
st.text("์š”์•ฝ ๊ฒฐ๊ณผ")
st.success(response)