1. Introduction
📌 뻘글
주위에 AI 연구하는 사람들이 본인들만 재밌는 거 하는 게 심술이 나서 나도 써보고 싶어졌다.
(또 자기네들만 재밌는 거 하지.)
그런데 차마 fine-tuning까지는 못 해먹겠고, few-shot learning으로 우선 만족하기로 했다.
나중에 진짜 사용자가 생기면, prompt를 개선하든 fine-tuning을 하든 발전시키는 게 이롭다고 생각.
처음에는 deepseek 오픈소스 데려와서 사용하고 있었는데, 국내에서 차단 당해버렸다.
그래서 다른 거 뭐 있나 찾다가, Qwen을 사용하기로 결정했다.
문제는,

너무 느려.

애플리케이션 초기 환경 로그를 찍어보니, 멀쩡하게 달려있는 GPU 사용하지도 않고 있길래 CUDA 설치를 하긴 했는데

랩탑에 달려있는 귀여운 GPU라 수행 시간이 15분에서 10분 정도로 감축하긴 해도, 여전히 느려 터졌다.

이건 되게 점잖게 들었고, 좀 친한 석사한테 "vram 2GB에서 Qwen2.5-1.5B-Instruct 돌리고 있어요!"라고 말했더니
미쳤냐고 욕부터 먹었다.
애초에 로컬에서 실행하는 건 양자화된 거라, INT4? 아니면 INT8 표현 방식을 쓸 텐데, 그러다보니 답변도 자꾸 틀려멋는 문제가 있었다.
그래서 그냥 API 연결하려고 보니, 알리바바 클라우드 API 연동에 대해 적힌 글이 하나도 없어서 한참을 헤매다, 겨우 연동하고 글 쓰는 중.
왜 근데 ChatGPT가 아니고 Qwen을 쓰냐?
그야, 싸니까요.
👤: 중국 기업인데, 괜찮으시겠어요?
🤷♂️: 제 개인정보 따위 진즉에 다 털렸을 텐데, 그럼 돈이라도 절약해야죠.
👤: ...?
AI 모델 업글은 나중에 사용자에게 광고비를 가득 빨아먹고 해도 늦지 않는다.
2. Registering the Alibaba Cloud Qwen Model
📌 Alibaba Cloud
Alibaba Cloud: 클라우드 컴퓨팅 서비스
세계 최고의 클라우드 컴퓨팅 및 인공 지능 기술 회사는 전 세계적으로 확장 가능하고 안전하며 안정적인 클라우드 컴퓨팅 서비스를 제공합니다.
www.alibabacloud.com
우선 알리바바 클라우드 들어가서 회원가입하고, 결제 카드 등록을 하면 된다.
절차가 AWS보다 간단해서 어렵지 않다.
(콘솔은 한글 지원 안 하면서, 홈 페이지는 한글을 지원함.)
아, 참고로 카드 등록하고 인증까지 해야 나중에 서비스를 쓸 수 있다.
난 그것도 모르고, API 요청했을 때 카드 인증하라고 에러 문구 받은 후에야 알았다.
📌 Alibaba Cloud Model Studio

콘솔에 들어가서 Alibaba Cloud Model Studio를 클릭하면 된다.
그런데 나는 저기서 들어가니까 자꾸 무한 로딩 걸리길래, 해당 링크를 통해 들어갔다.
근데 또 지금은 잘 됨 ㅋ

나는 이 중에서도 가장 싼 Qwen-Turbo 모델을 선택했다.
이게 얼마나 싸냐면,

입력 토큰은 $0.00005/1,000 tokens, 출력 토큰은 $0.0002/1,000 tokens 밖에 안 된다.

ChatGPT o3-mini 가격 정책과 비교했을 때, 입/출력 모두 22배 저렴하다.
만약 하루 1,000명이 인당 3번 씩 요청하고, 요청 당 입력 150 tokens/ 출력 150 tokens를 사용한다고 쳤을 때,
한 달에 약 71달러나 절약 가능하다. (치킨이 3마리다.)
난 어차피 간단한 instruct 모델이 필요한 거라, 이 정도 스펙으로도 충분하다.
📌 API Key

우측 상단을 보면 My API Keys라고 있을 텐데,

누르면 위와 같은 팝업이 뜰 거고, 그냥 API Key를 발급하면 된다.
여기서 받은 키를 복사해놓고 어디 유출 안 되게 보관해두자.
3. Integrating to FastAPI
📌 HTTP Request

API 문서를 보면, SDK도 제공해주는 모양이다.
우선 사용 가능한지 확인을 해보기 위해서, 우측 하단의 `Text input > HTTP`를 선택하면 예시를 확인할 수 있다.


너무 잘 응답한다. ㅠㅠ
하지만 Fast API에서 사용할 때는 좀 더 간단하게 OpenAI 라이브러리를 사용해서 구현했다.
📌 OpenAI
pip install openai
프로젝트에서 openai 패키지를 설치해주자.
client = OpenAI(
api_key=settings.ALIBABA_API_KEY,
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
API 문서에 나와있는 거랑 동일하게 client를 초기화해주고,
completion = client.chat.completions.create(
model="qwen-plus", # Here qwen-plus is used as an example. You can change the model name as needed. Model list: https://www.alibabacloud.com/help/en/model-studio/getting-started/models
messages=[
{'role': 'system', 'content': 'You are a helpful assistant.'},
{'role': 'user', 'content': 'Who are you?'}],
)
print(completion.model_dump_json())
공식 문서 상에는 위와 같이 사용하면 된다고 나와있다.
async def correct_text(input_text: str) -> CorrectionResponse:
prompt = get_correction_prompt(input_text)
try:
completion = client.chat.completions.create(
model=settings.MODEL_NAME,
messages=[
{"role": "system", "content": prompt},
{"role": "user", "content": input_text}
],
max_tokens=settings.MAX_TOKENS
)
result = completion.choices[0].message.content
logger.info(f"API response: {result[:200]}...")
parsed_result = parse_llm_response(result, input_text)
return parsed_result
except Exception as e:
logger.error(f"API call failed: {e}")
return CorrectionResponse(
original=input_text,
needs_correction=False,
corrected=input_text,
explanation=f"API call failed: {str(e)}",
alternatives=[]
)
나는 max_tokens 설정을 덧붙였다.
내 소중한 돈이 함부로 빠져나가는 것은 용납하지 않겠다는 의지다.
이것도 API 문서의 Request의 Parameter 항목을 보면 알 수 있는 내용.
📌 Test


하, 성공.
ChatGPT API 쓸 때 제외하고 클라우드에서 모델 대여해본 적도 없고,
익숙하지도 않은 알리바바 클라우드 콘솔창 뒤져보다가 스트레스 받아서 블로그에 기록해두었다.