LLM의 고집을 꺽어야
LLM(개발시 주로 claude, gemini 씁니다)도 학습할때 AI개발쪽에는 python 자료가 많으니까 가중치도 python이고 그쪽으로 편향이 있네요
N100 미니PC 1대를 AI NODE로 쓰는데 egde LLM으로 gemma 3 1b it 가 이미 cpu core 1개와 igpu 다 점유해서
RAG 기능 덧붙인다고 all-minilm-l6-v2 라는 cpu용 embedding model을 쓰려고 했더니 안티그래비티의 claude가 지금 설계상 어차피 gemma도 python worker를 rust에서 호출해서 쓰기 때문에 embedding도 pytorch로 하는게 맞다고 하길래 꼭 그래야 되나 싶었지만 일단 그렇게 했죠
근데 그렇게 했더니 느리고 똑같은 프로세서에서 자원경합 하면서 RAG(LLM 과 EMBEDDING 동시가동) 통해 답변할때 한번씩 헛소리가 늘어나더군요
그러다가 오라클 클라우드 AMD EPYC CPU core 2개 RAM 1GB짜리 인스턴스에 RUST로 웹스크래핑/API 데이터수집해서 임베딩까지 해서 postgresql pgvector 벡터DB에 저장해서 N100서버에서 필요시 접속해 사용할 RAG용 데이터베이스 만들려고 알아보다보니
(이 인스턴스는 몇년을 365 24로 써도 정말 안정적이라 물론 XEON이 더 안정적이겠지만 한번 구동해놓으면 신경끄고 있어도 될정도라)
근데 램1GB라는 제약은 어쩔 수 없어요 아주 최적화를 잘해야 됩니다
postgresql pyvector 설치하고 최소한 리소스 사용 설정으로 바꾸고
rust로 앱 만들고
문제는 여기에 pytorch 임베딩을 하면 도저히 램1gb로는 감당이 안된다는겁니다
그래서 알아보니 all-minilm-l6-v2 를 쓸수있는 rust fastembed 가 있더라구요. qdrant 팀에서 만든것. 그냥 pytorch와 똑같은 성능인데 훨씬 가볍고 4배는 빠르죠
그래서 당장 임베딩도 python에서 rust로 리팩터링 하라고 했습니다. cluade 이놈이 궁시렁거리면서 리팩터링 하더군요
python으로 해도 충분한데 뭘 rust로 또 바꾸라고 귀찮은데 어쩌구 저쩌구
확 씨
바꾸고 나니까 너무 좋더군요 한방에 빌드 및 런타임 성공
그간 삽질한것들이 기술문서 기획서 계획서 와 코드 사이에 주석으로 많이 남아있기 때문이죠
저는 에이전틱코딩할때 코드뿐만 아니라 다양한 문서작성도 많이 시킵니다. 외부 LLM들의 의견들까지 종합해서 문서들을 열심히 업데이트 합니다
AI도 편향이 있다는것 그리고 비의도한 의심되는 코드 주입 그리고 항상 확률적으로 의외의 답변을 할 수 있다는 점(특히 조그만 모델일 수록 더 그렇고 저같은 경우 이번 케이스에서는 프롬프트 엔지니어링도 신경쓰지만 후처리도 6단계로 합니다. 이렇게 해도 항상 완벽하게 원하는 형태로 답변을 주지는 않기 때문에 어는정도 유연하게 설계합니다 안 그러면 parsing 에러로 어느 단계에서 멈춰버릴 수도 있고)
그러니까 비록 에이전틱개발이더라도 AI가 시키는대로만 하면 안된다는걸 느낍니다
AI 자기 편한대로 할려고 하고 학습한대로 일반론을 주입하려고 하는 경향이 있죠
그래서 내가 기획, 시스템, 설계, 유즈케이스를 어느정도 알고 주도권이 있어야 내가 원하는 결과물을 받을 수 있습니다
요즘은 코드는 잘 안봅니다. 심지어 코드에서 변수값 바꾸는것도 에이전트 한테 시킵니다
그딴식으로 하다가 AI가 나몰래 악성코드 집어넣으면 어떻하냐구요? 다른 AI모델 3개한테 코드리뷰 시키면 됩니다
지금은 코드에 관심없고 기획, 설계 문서 작성하기 바쁩니다. 기획 설계를 AI와 같이 발전시키고 그 문서 읽고 따라가기도 너무 바쁩니다
기획 설계안만 있으면 오라클 클라우드 인스턴스에 RAG 용 데이터 노드 만드는건 30분 컷입니다(물론 OCI 들어가서 인스턴스 생성 하고 네트웍설정 OS및소프트웨어설정이 더 오래 걸립니다)