ChatGPT, Gemini, Perplexity와 같은 대규모 언어 모델(LLM: Large Language Model)은 수십억 개의 파라미터를 기반으로 방대한 데이터를 학습하여 다양한 분야에서 활용되고 있습니다.
이러한 모델들은 뛰어난 성능을 보이지만, 보안 제품과 같이 제한된 자원 환경에서 구동하기에는 자원 소모가 클 수 있습니다. 따라서 본 글에서는 대규모 AI 대신, 보안 제품에 효율적으로 통합될 수 있는 경량화된 대규모 언어 모델, sLLM(smaller Large Language Model) 또는 소규모 언어 모델 SLM(Small Language Model)에 대해 자세히 알아보고자 합니다.
갤럭시 핸드폰에 사용되는 AI와 마찬가지로, sLLM과 SLM은 보안 제품의 성능과 효율성 향상에 중점을 두고 설계되었습니다.
sLLM은 대형 언어 모델을 압축하거나 경량화하여 LLM의 주요 기능을 유지하면서 더 빠른 응답 속도를 제공합니다. 하지만 빠른 응답 속도를 위해서는 충분한 CPU 또는 GPU 성능이 필수적입니다. 반면, SLM은 특정 작업에 최적화된 상대적으로 적은 수의 파라미터를 사용합니다. 빠르고 경량화된 성능이 중요하며, 저사양 환경에서도 효율적으로 작동하므로 보안 제품의 특정 기능에 통합하는 데 적합합니다.
저의 경우는 허깅페이스 (
모델 기반은 Meta 에서 개발한 LLama3.1 기반으로 제작되어있는 파일입니다.
개인 PC나 서버에서 구동해보려면 Ollama 라는 구동 framework 를 다운로드 받아 테스트 해볼 수 있습니다. 텍스트기반이 익숙치 않다면 GUI 기반의 msty 를 사용해 보셔도 됩니다. (모두 무료입니다.)
위의 자료는 매개변수(파라미터) 수의 변화를 나타냅니다. 파라미터수가 많을수록 범용적으로 사용할 수 있으나 성능이 뒤따라 줘야한다는 단점이 있습니다.
따라서 임베디드 형태나 클라우드 형태로 제품이 도입되어야 하기에는 sLLM 또는 더 하위 모델인 SLM (Small Language Model) 을 사용해야 할 것입니다.
참고) 보안 솔루션에 적합한 AI 모델 선택 기준
• 보안성 : 모델 자체의 보안 취약점 최소화 • 특화된 기능 : 보안 정책 관리, 위협 탐지, 로그 분석 등 특정 보안 작업에 최적화된 모델 • 응답 속도 : 실시간 위협 대응을 위한 빠른 처리 능력 • 확장성 : 다양한 보안 환경에 적응 가능한 유연성 |
** AI가 도입된다면 여러분들은 이제 논리적인 프롬프트를 연습하셔야 할 때입니다 **
AI 를 사용하면 프롬프트를 잘 입력해야 되는거 아닌가요 ? 라고 생각 하실 수 있습니다. 맞습니다. 프롬프트는 자세하고 잘 작성할수록 그 결과가 다릅니다. 특히나 이미지 생성과 영상제작에서는 더욱 그렇습니다.
같은 AI 지만 결과물이 조금씩 다르게 나옵니다. 또한 프롬프트도 “광고 모델을 만들어줘” 라고 하는 것보다는 “화장품 광고에 어울리고 뒷배경은 블러처리되었으며 분홍색 옷을 입은 여성모델을 만들어줘” 라고 하는 것처럼 자세하게 표현하는 것이 중요합니다.
“화장품 광고에 어울리고 뒷배경은 블러처리되었으며 분홍색 옷을 입은 여성모델을 만들어줘” 라고 생성한 AI 이미지입니다.
두 번째는 조금 더 미세조정된 파닝튜닝 프롬프트 입력 기법을 사용하여 더욱 자세하고 정교한 프롬프트 입력으로 아래와 같은 사진을 만들었습니다.
이 두 가지 AI 이미지는 같은 AI 모델을 사용하여 만들었지만 입력하는 내용과 기법에 따라 전혀 다른 결과물을 도출해냅니다.
sLLM 이라고 다를까요? Small LLM 또한 마찬가지입니다.
내가 원하는 바를 명확하게 설명하여 질문 하여야 올바른 대답과 명쾌한 답변을 알려줍니다.
같은 AI를 사용하더라도 상세한 질문 방법을 활용하면 더욱 원하는 대답을 얻을 수 있습니다.
똑같은 질문이어도 다른 AI를 사용하면 출력물이 다르기에 각 상황에 맞는 AI를 도입•검토해야 합니다.
프롬프트 엔지니어링의 주요 기법은 여러가지가 있습니다.
(아래의 내용은
기법 | 개요 |
명확한 입력 | 육하원칙에 따르거나 출력 문서 수를 지정하여 애매한 부분 제거 |
역할 부여 | GPT에 역할 또는 숙련도 같은 페르소나 지정 |
가상 입력 제공 | 가상의 유저가 입력할 것으로 예상되는 내용 제공(Dan prompt) |
출력 형식 지정 | 원하는 출력 형식을 지정하거나 예시 작성 |
질문 및 답변 예시 제공 | 예상 질문 또는 예상 답변 예시 제공 |
단계적 추론 | 결론을 바로 내리지 않고, 단계적으로 응답 작성 지시(천천히 스텝 바이 스텝으로 해봐~ 등) |
목적 제공 | 수단과 함께 달성하려는 최종 목표를 작성 |
지식 및 해법 제공 | 해결에 필요한 지식 및 논리 전개 절차를 제공(수식을 달려준다던지...) |
기호 활용 | 프로그램에서 활용하는 기호나 문법 활용(표 아래의 내용에서 자세히 다룹니다!) |
프로그래밍 활용 | 엄격하게 순서가 정해진 지시는 프로그래밍 언어로 작성 |
구조화 | 구조화된 형식으로 지시 작성(JSON 또는 Mark Down 형태) |
영문화 | 지시는 영문화로 내리고 응답은 한국어로 받기 - 우리가 사용하는 해외 GPT들은 한국어로 질문하여도 내부적으로는 영문으로 자체적으로 번역 후 응답을 한국어로 하게 되어있습니다. 그래야 더욱 답변도 잘 나오기때문에 내부적 셋팅이 그렇게 되어있고 그렇기에 자동화 번역된 내용으로 하기보다 애초에 영어로 질문하고 답변만 한국어로 받는것이 더욱 품질이 좋습니다. (영어를 공부해야하는 이유…?!) |
정보 배치 순서 조정 | 중요한 정보를 프롬프트의 맨 뒤에 배치 |
직접적 표현 사용 | 부정적 표현 및 완곡한 표현을 피하고 명확하게 지시 |
'프롬프트' 와 '구분 기호'가 있습니다.
기호만 잘 사용해도 LLM 답변의 품질이 달라집니다.
프롬프트 작성에서 기호 사용은 중요합니다. 구조화 때문인데요.
구조가 명확해지면, LLM이 불필요한 설명을 하거나 엉뚱한 부분 그리고 할루시네이션(헛소리) 답변하는 확률이 줄어듭니다.
프롬프트에 사용하는 기호를 구분자 (Delimiters) 라고 합니다.
구분자 사용은 프롬프트 엔지니어링의 기본 기법입니다. OpenAI 와 Anthropic 등의 모델사에서는 프롬프트에 기호 사용을 권장합니다. sLLM 도 마찬가지입니다.
그럼 어떻게 하는걸까요 ?
“아이돌 사진 만들어줘” 라고 단순 한글로 입력했을 때의 결과값은 아래에 있는 사진 입니다.
이제는 프롬프트 엔지니어링을 통해 이미지 생성 예시 프롬프트를 작성해 보았습니다.
[예시 프롬프팅] I want a make a idol girl group member (girl group), (idol uniform), (in the stage), (wide hips:1.3), (sexy:1.4), (bunny girl), (blond hair), (wearing suite), (thigh gap:1.2), (huge breasts:1.7), (intricate details:1.2), (face, mature female:1.2), Depth of field, Cinematic Light, Lens Flare, Ray tracing, perspective, RAW, detailed skin, sharp focus, delicate, korean, instagram, pop idol, korean beauty, korean mixed, best quality, extremely fine and beautiful, best illumination, semi realistic, aegyo sal, illustration, FEMININE, adult, pale white skin, by Joao Ruas, by John William Waterhouse, [by Gil Elvgren], cinematic lightings, soft volumetric lighting, subsurface scattering, (night photography:1.3), (solo:1.2), solo focus, (crowd:1.2), outdoors, blurry background, (walking:1.3), (bangs:1.3), (looking away, long hair, :1.3), (thighs, Crop sweater, denim jeans, luxury bag, necklace, earrings, jewelry, :1.2)| [이상한 부분을 제거하는 프롬프팅] Negative Prompt weird fingers, blurred face, indistinctive product label(제품을 넣을 경우) |
이런 프롬프트를 가지고 생성한 아래의 결과물은…..
현대 사회는 초시대, 초개인, 원격근무 시대, 그리고 제로트러스트 시대를 맞이하고 있습니다. 이러한 환경 변화는 보안 시스템에 대한 요구 사항을 더욱 까다롭게 만들고 있습니다. 보안 시스템은 이전보다 더욱 강력하고, 복잡하며, 개인화된 보호 기능을 제공해야 합니다. 보안 제품의 증가와 복잡한 상호 연동으로 인해, 보안 및 운영 담당자들은 복잡한 연결 및 정책 설정 관리에 어려움을 겪고 있습니다. 매뉴얼을 통한 관리 방식은 이러한 복잡성을 더욱 증폭시키는 요인입니다.
하지만 sLLM과 같은 경량화된 AI를 도입하면 이러한 운영 환경의 어려움을 크게 해소할 수 있습니다. 지니언스의 제품을 예시로, AI 도입 시 어떤 이점이 있을지 예상해 볼까요 ?
보안 맥락에서의 구분자 사용 예시
⇒ 작업 유형 : 네트워크 접근 정책 생성
[사용자 정보]
• 역할 : 재무팀 관리자
• 접근 필요 시스템 : ERP, 회계 시스템, 데이터 웨어하우스 • 위치 : 본사 및 재택근무 [보안 요구사항]
• 다중 인증 필수
• 업무 시간 외 접근 제한 • VPN 필수 연결 </보안 요구사항> 정책 생성 요청: 위 정보를 바탕으로 제로트러스트 환경에 적합한 접근 정책을 생성해주세요.
|
정말 이런 것이 가능할까 싶으시다면, 맺음말을 읽어 주시길 바랍니다.
위의 자료는 AgentOps AI에서 조사한 AI에이전트들입니다. 코딩, 세일즈, 보이스, 영상 등 여러 부분이 있습니다. 여기에 보안 어시스턴트 AI agent 가 나오게 된다면 어떨까요? 제품별 에이전트가 나오거나 보안 제품 매뉴얼을 학습한 에이전트가 출시될지도 모르는 일입니다.
앞으로 각종 AI와 더불어 여러 제품들이 출시되겠지만 인터넷이 사용 가능한 상태의 제품이거나 클라우드 형태로 구독하는 보안 제품의 경우 AI 에이전트를 통해 정책을 자동화 하고 편하게 관리할 수도 있을 거라 기대합니다.
또한 기술의 발전으로 제품내 sLLM 이 탑재되어 더욱 편리하게 이용 할 수 있는 날이 멀지 않았습니다.
AI가 나날이 발전하듯 지니언스 또한 발전합니다.
지니언스 ZT전략기술팀에서 새로운 기술의 접목과 제품연구와 정책과제를 담당하고 있습니다.