반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- MIN
- sum
- 제약조건
- Depthwise Convolution
- join
- 데이터베이스
- total
- 교차엔트로피오차
- Pointwise Convolution
- 수치미분
- 합계
- sigmoid
- 시험데이터
- AVG
- max
- next.js 튜토리얼
- sqlite3
- 오차제곱합
- PYTHON
- 평균
- 미니배치
- 신경망
- Depthwise Separagle Convolution
- PyQt5
- Next.js
- 최댓값
- 밑바닥부터 시작하는 딥러닝
- 렐루함수
- 학습 구현
- COUNT
Archives
- Today
- Total
우잉's Development
[LLM 기본] 모델 선택 기준 & Function Calling 본문
728x90
반응형
모델 선택 기준
- 비용
- 비용은 선택한 모델이 사용하는 토크나이저를 사용해서 계산해야하며 모델에 따라 비용이 다릅니다.
- 정확히 계산하고자 한다면 각 모델에서 제공하는 토크나이저로 계산하거나, API 호출로 출력되는 토큰수를
참고해야함. - 속도
- 정확도 (성능)
- 정확도에 대한 다양한 벤치마크가 존재하지만, 벤치마크마다 강점이 있는 모델이 따로 있는 경우가 있다.
- 점수가 높다고 하더라도 실제 사용하는 사례에서는 원하는 성능이 나오지 않을 수 있다.
- 현재 (2023.07.01)까지는 GPT-4, gpt-3.5-turbo, Claude정도가 실사용이 가능한 수준이다. - 경향성
- 모델 선택시 정확한 정보 제공이 필요한 것이 아니면 경향성을 보고 판단
ex) gpt-3.5-turbo: 구어체 의 채팅형에 최적화 하여 튜닝
GPT-4 : 어느정도 구조화된 리포트 형태로 생성하는 경향이 있음.
- 모델이 업데이트 될 때 마다 경향성이 약간씩 변경되서 지속적으로 모니터링 할 필요가 있다. - 안전성
- OpenAI의 경우 ModerationsAPI 제공 MS Azure의 경우 기본적으로 컨텐츠 필터링이 적용되어 있으며,
해제를 원하면 승인을 받아야함. - API 안정성
- OpenAI 보다 MS가 조금 더 안정성이 높다는 의견이 있지만, 모델이 업데이트 될 때 초반에는 한동안 안정성이
급격히 떨어지는 경우가 존재
- 대부분 안정성이 높지 않으므로 실서비스 적용시 Failover등의 정책을 면밀히 고려 - 보안
- 악의적인 공격이나 비윤리적인 사용을 방지하기 위해 대부분 30일간 로그를 남겨두지만 API로 들어오는데이터는
학습에 사용하지 않음.
- 극도로 민감한 데이터를 사용해 결리된 온프라미스 네트워크 환경이 필요하다면 커스텀 LLM을 사용해야함.
- 그러나 운영비용이 매우 크거나 비효율적일 것이므로 면밀하게 예상비용을 계산해야한다.
- 사용처에 따른 비용 효율과 성능에 대한 평가를 많은 시간과 비용을 들여 진행할 필요가 있다.
정확도가 높으며 속도가 빨라야하지만 그만큼 비용이 많이 듭니다.
Function Calling (Tooling)
- 정의 : GPT모델에 호출 할 수 있는 함수(기능)를 설정해두면, 사용자의 요청이 해당 기능이 필요한 요청이라면, 해당 함수 호출하는 기능
- 특징 : 직접 함수를 호출하는 것은 아니고, 어떤함수와 파라미터가 필요한지 JSON형식으로 응답.
- 기본 사용 예시
{
"name" : "get_current_weather",
"description" : "주어진 위치의 현재 날씨를 가져옵니다.",
"parameters" : {
"type" : "object",
"properties":{
"location":{
"type":"string",
"description": "도시 또는 지역, 예) 서울",
},
"unit":{ "type": "string", "enum":["celsius", "fahrenheit"]},
},
"required": {"location"],
},
}
- name : 필요한 기능 확인시 반환할 함수명
- description : 해당 함수에 대한 설명
- parameters : 함수 호출에 필요한 파라미터 정의
- description (파라미터) : 이 설명에 따라 파라미터를 요청하거나 생성
- required : 함수 호출을 만들기 위해 필요한 필수 정보
4. SQL Builder
{
"name": "ask_database",
"description": "Use this function to answer user questions about music. Input should be a fully formed SQL query.",
"parameters": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": f"""
SQL query extracting info to answer the user's question.
SQL should be written using this database schema:
{database_schema_string}
The query should be returned in plain text, not in JSON.
""",
}
},
"required": ["query"],
},
}
5. JSON formatter
주의사항
- 프롬프트 인젝션
- 프롬프트 인젝션을 통해 민감정보를 추출하거나, RCE(Remote Code Execution) 공격을 하는 것을 사전에 고려하여 방어해야 함.
- 사용자의 아이디나 비밀번호등 민감정보가 필요한 함수의 경우, 파라미터 설정에 넣지 않도록 주의
- 응답 받은 함수를 바로 실행하지 말고, 보안상 문제 없는지 정상적인 파라미터와 함께 호출하도록 응답되었는지를 확인한 후 실행
- 응답 받은 함수를 바로 실행하지 말고, 보안상 문제 없는지, 정상적인 파라미터와 함께 호출하도록 응답되었는지를 확인한 후 실행 - 호출 오류
- 모든 요구사항에 대해 항상 정확하게 응답하는 것은 아니여서 원하지 않은 경우에도 호출이 일어날 수 있다.
- GPT가 설정하지 않은 함수라도 설정내용으로 추측해, 존재하지 않는 함수를 호출하는 경우가 발생할 수 있다.
- 요청사항을 잘못 해석해 파라미터를 잘못설정해 응답하는 경우가 발생할 수 있다.
- 응답 받은 파라미터 값을 항상 확인하고 실행
- 중요한 동작을 실핼 할 때는 사용자에게 실행할 액션을 보여주고 확인한 뒤 실행
- 정밀도가 높아야 하는 경우에는 되도록 gpt-4를 사용
728x90
반응형
'Deep learning > LLM' 카테고리의 다른 글
[LLM 기본] 임베딩과 시멘틱 서치 (1) | 2023.09.06 |
---|---|
[LLM 기본] 프롬프트 요구사항 명세 (0) | 2023.09.06 |
[LLM 기본] 프롬프트 엔지니어링 기본 (0) | 2023.09.05 |
[LLM 기본] 생성 조건 (0) | 2023.09.05 |
[LLM 기초] 프롬프트 보안 (0) | 2023.08.31 |
Comments