# %%import promptlib as plfrom emoji import EMOJI_DATAimport json# %%AICI_API_BASE=""aici = pl.AICI(base_url=AICI_API_BASE, wasm_runner_id="declctrl-latest")# %%program = pl.PromptProgram(aici)p = program + "Please suggest emoji representing the text provided:\n"p += "Q:Dance\nA:"p = p.choose(EMOJI_DATA.keys())result = program.run()
(08:44) 이제 Q:와 A: 사이에 사용자 텍스트를 집어넣으면 이모지를 팍팍 만들어주겠지?
(08:51) promptlib는 aici에서 제공하는 라이브러리인데 간단히 말해서 LLM이 생성하는 데이터를 제어하는 코드를 쉽게 만들어줘요.
(08:52) 여기선 유니코드 emoji에 해당하는 값만 허용하게 해줘요.
(09:17) 조금 더 설명하자면 모델이 다음 토큰을 예측할 때 먼저 모든 토큰에 대해 확률을 계산하고 그중 가장 그럴듯한 (가장 높은 확률) 후보를 다음 토큰으로 생성해내는 건데, 아예 내가 원하지 않는 토큰들을 싹 무시하도록 하고 나머지 중에 제일 좋은 후보를 선택하도록 하면 모델이 헛소리를 하고 싶어도 할 방법이 없어지는 원리죠.
(09:21) 다만 이렇게 하려면 모델이 계산해내는 확률값을 접근하고, 거기다가 내가 원하는 후처리 작업을 할 수 있어야 하니까 AI 생성 작업에 감시자 프로세스를 붙일 수 있는 환경이 필요한데… 그게 바로 Microsoft의 aici
(09:59) 하여튼 이모지가 나오긴 나오는데 여기서 프롬프트 뒷부분만 꺼내오는게 좀 라이브러리 지원이 별로네요.
(10:22) 그치만 aici는 jupyter notebook에서 바로 쓰기 어렵네요… 다시 promptlib를 가지고 어떻게 해 보겠습니다.
(10:23) 아 역시 README를 안읽으면 바보… promptlib tutorial을 보니 storage에 뭔가 저장할 수 있네요.
(10:24) 그래서 결과값 부분을 저장하게 하니까 쨘! 뾰로롱!
서비스
(10:50) 아이고 시간없다 일단 Flask로 그냥 python API 하나만 쨘
(10:51) 애들이 옆에서 컴퓨터 내놓으라고 성화중
컨테이너
(10:52) 서버를 컨테이너에 좀 우겨넣어야 여기저기 옮길 수 있지 않을까나…
(10:59) 애들이 컴퓨터 내놓으라고 해서 뺏김ㅠ
(13:24) 돌아왔다
(13:25) aici/에는 아직 제대로 된 Dockerfile이 없는듯? 일단 내가 만들어봄
(13:54) 빌드가 작지 않아서 곤란하다…
# Use the official Rust image as the base imageFROM rust:latestRUN rustup target add wasm32-wasiRUN apt-get update && apt-get install -y cmake ccache clang# Set the working directory inside the containerWORKDIR /usr/src/appCOPY . .WORKDIR /usr/src/app/llama-cpp-low/RUN cargo build --releaseWORKDIR /usr/src/app/rllm-cpp/RUN cargo build --releaseENTRYPOINT [ "rllm-cpp/cpp-server.sh", "phi2" ]
(13:59) 한글자만 바꿔도 풀빌드해야하는 미친 설정이지만 어쨌든 돌아가게 만드는 게 1순위라…
(21:57) docker-compose에서 버벅이고 있다
(22:02) 아직 코드가 배포 환경을 신경쓰지 않았는지 서버에 하드코드로 host = “127.0.0.1”이 박혀있었다…
(22:02) docker에서 쓰려면 외부 접속이 되어야 하는데!
(22:05) 아… docker-compose에 expose랑 ports는 별개의 설정이었다. 네이놈 copilot!