Gradio를 Jupyter 노트북 내에서 실행할 때, 인터페이스가 iframe으로 표시되므로 해당 iframe의 높이를 조절해야합니다.

Gradio의 Interface 객체는 launch() 메서드에 live 및 inline 두 가지 중요한 파라미터를 가지고 있습니다. inline 파라미터를 True로 설정하면 Jupyter 노트북 내에서 Gradio UI를 직접 볼 수 있습니다.

그렇다면, 출력의 높이를 늘리려면 어떻게 해야 할까요?

현재 Gradio의 기본 API에서는 inline 모드의 높이를 직접 조절하는 파라미터를 제공하지 않습니다. 하지만 Jupyter의 CSS를 사용하여 iframe의 높이를 조절하는 것이 한 가지 방법이 될 수 있습니다.

다음은 Jupyter 노트북에서 Gradio 인터페이스의 iframe 높이를 조절하는 방법의 예입니다:

from IPython.core.display import display, HTML
iframe 높이를 조절하는 CSS를 설정합니다.
display(HTML("""

<style>
    iframe {
        height: 500px !important; 
    }
</style>
"""))

import gradio as gr

def greet(name):
return f"Hello {name}!"

iface = gr.Interface(fn=greet, inputs="text", outputs="text")
iface.launch(inline=True)

위의 코드에서는 CSS를 사용하여 iframe의 높이를 500px로 설정하였습니다. 이 값을 조절하면 원하는 높이로 설정할 수 있습니다.

그러나 이 방법은 Jupyter 노트북에 있는 모든 iframe에 적용되므로, 다른 iframe 요소에 영향을 미칠 수 있습니다. 필요에 따라 더 구체적인 CSS 선택자를 사용하여 Gradio에만 적용되도록 조정할 수 있습니다.

nest_asyncio 라이브러리는 기본적으로 비동기 이벤트 루프가 중첩될 때 발생하는 문제를 해결하기 위해 설계되었습니다. 특히, Jupyter와 같은 환경에서는 이벤트 루프가 이미 실행 중이기 때문에 추가적인 비동기 작업을 수행하려면 문제가 발생할 수 있습니다.

nest_asyncio에 대해 설명할 5가지 주제는 다음과 같습니다:

  1. 동기 및 비동기의 기본 개념:

    • 동기 코드는 명령이 순차적으로 실행되며, 한 작업이 완료될 때까지 다음 작업은 대기합니다.
    • 비동기 코드는 특정 작업이 완료되기를 기다리지 않고 다른 작업을 실행할 수 있습니다. Python에서 asyncawait 키워드를 사용하여 비동기 코드를 작성합니다.
  2. 이벤트 루프:

    • 이벤트 루프는 비동기 작업을 관리하고 실행하는 핵심 구성 요소입니다.
    • 일반적으로 한 번에 하나의 이벤트 루프만 실행될 수 있습니다. 따라서 중첩된 이벤트 루프를 실행하려고 하면 오류가 발생합니다.
  3. Jupyter와 비동기:

    • Jupyter는 자체 내부 이벤트 루프를 실행하므로, Jupyter 셀 내에서 추가적인 비동기 코드를 실행하려고 하면 중첩된 이벤트 루프 문제가 발생합니다.
    • 이는 Jupyter에서 asyncio를 사용하여 비동기 코드를 실행하려고 할 때 특히 문제가 됩니다.
  4. nest_asyncio의 역할:

    • nest_asyncio는 기본 이벤트 루프를 패치하여 중첩된 이벤트 루프를 허용합니다.
    • 이 라이브러리를 사용하면, Jupyter와 같은 환경에서도 비동기 코드를 문제없이 실행할 수 있습니다.
  5. nest_asyncio의 사용법:

    • 라이브러리를 설치한 후, Jupyter 노트북에서 간단하게 아래와 같이 사용하여 패치할 수 있습니다.

      pythonCopy code

      import nest_asyncio nest_asyncio.apply()

    • 이 명령을 실행한 후에는 Jupyter 내에서 비동기 코드를 자유롭게 실행할 수 있습니다.

요약하면, nest_asyncio는 Jupyter와 같은 환경에서 중첩된 이벤트 루프 문제를 해결하여 비동기 코드의 실행을 가능하게 하는 유용한 도구입니다.

Python은 다양한 암호화와 복호화 방법을 지원합니다. 여기서는 가장 간단한 'base64' 모듈을 사용한 암호화와 복호화 방법을 설명하겠습니다.'base64'는 일반적으로 바이너리 데이터를 ASCII 문자열 형식으로 인코딩하는데 사용됩니다.아래는 Python에서 'base64' 모듈을 사용해 문자열을 암호화하고 복호화하는 간단한 코드입니다.

 

import base64

# 원본 문자열
original_string = "Python을 이용한 문자열 암호화 및 복호화"

# 문자열을 bytes 형태로 변환
bytes_string = original_string.encode("UTF-8")

# 문자열 암호화
encrypted_string = base64.b64encode(bytes_string)

print("암호화된 문자열 : ", encrypted_string)

# 문자열 복호화
decrypted_string = base64.b64decode(encrypted_string).decode("UTF-8")

print("복호화된 문자열 : ", decrypted_string)

 

이 코드를 실행하면 원본 문자열이 base64 인코딩을 통해 암호화되며, 그 결과가 출력됩니다. 그 다음에는 암호화된 문자열이 다시 base64 디코딩을 통해 복호화되어 원본 문자열로 돌아오며, 그 결과가 출력됩니다.이처럼 Python의 'base64' 모듈을 사용하면 문자열을 쉽게 암호화하고 복호화할 수 있습니다. 하지만 'base64'는 실제 보안에는 적합하지 않으며, 주로 데이터를 전송할 때 바이너리 데이터를 문자열 형태로 변환하는데 사용됩니다. 실제 보안이 필요한 경우에는 AES, RSA 등의 강력한 암호화 알고리즘을 사용하는 것이 좋습니다.

1. BERT

modelsizelink

KoBERT(SKT) base https://github.com/SKTBrain/KoBERT
KorBERT(ETRI) base https://aiopen.etri.re.kr/service_dataset.php
HanBERT base https://github.com/monologg/HanBert-Transformers
KcBERT base, large https://github.com/Beomi/KcBERT
KR-BERT(SNU)   https://github.com/snunlp/KR-BERT
Ko-Char-BERT base https://github.com/MrBananaHuman/KoreanCharacterBert
LMKor-BERT base https://github.com/kiyoungkim1/LMkor
DistilKoBERT(SKT 경량화)   https://github.com/monologg/DistilKoBERT
KLUE-BERT base https://huggingface.co/klue/bert-base
KPFBERT base https://github.com/KPFBERT/kpfbert
brainsbert(kakaobrain) base https://huggingface.co/hyunwoongko/brainsbert-base
KalBert base https://github.com/MrBananaHuman/KalBert
LMKor-Albert base https://github.com/kiyoungkim1/LMkor
KLUE-RoBERTa small, base, large https://huggingface.co/klue
KoBigBird base https://github.com/monologg/KoBigBird

 

2. ELECTRA

modelsizelink

TUNiB-Electra(TUNiB) small, base https://github.com/tunib-ai/tunib-electra
KoELECTRA small++, base https://github.com/monologg/KoELECTRA
KcELECTRA small, base https://github.com/Beomi/KcELECTRA
KoCharELECTRA small, base https://github.com/monologg/KoCharELECTRA
LMKor-ELECTRA base https://github.com/kiyoungkim1/LMkor

 

3. GPT

modelsizelink

LMKor-KoGPT2 base https://github.com/kiyoungkim1/LMkor
KoGPT2(SKT) base https://github.com/SKT-AI/KoGPT2
KoGPT-Trinity 1.2B(SKT) 1.2B https://huggingface.co/skt/ko-gpt-trinity-1.2B-v0.5
KoGPT(kakaobrain) 6B https://github.com/kakaobrain/kogpt

 

4. Encoder-Decoder(T5, BART)

T5

modelsizelink

KE-T5 small, base, large https://github.com/AIRC-KETI/ke-t5
LMKor-T5 small https://github.com/kiyoungkim1/LMkor
KcT5(개발 중 추측) base https://huggingface.co/beomi/KcT5-dev
pko-t5 base, large https://github.com/paust-team/pko-t5
KoT5(Wisenut) base https://github.com/wisenut-research/KoT5
ET5(ETRI)   https://aiopen.etri.re.kr/service_dataset.php

 

BART

modelsizelink

KoBART base https://github.com/SKT-AI/KoBART
Korean-BART mini, small, base https://cosmoquester.github.io/huggingface-bart-train/


출처: https://velog.io/@seoyeon96/PLM을-이용한-한국어-혐오-표현-탐지-1.-현황-파악

실행시 --port=xxxx 옵션 추가