본문 바로가기

전체 글

(224)
[AI] logit logit = log + oddsodds 란?실패 비율 대비 성공 비율확률 p에 대한 odds는 다음과 같이 정의된다.logit확률 p의 로짓 y은 다음과 같이 정의된다.즉, odds에 자연로그를 씌운 것.logit은 log + odds에서 나온 말이다.odds는 그 값이 1보다 큰지가 결정의 기준이고, logit은 0보다 큰지가 결정의 기준이다.logit의 역함수는:아래 위로 e−L">e−y을 곱해주면 아래와 같이 시그모이드(sigmoid) 함수로 나온다:확률의 범위는 [0,1]">[0,1] 이므로, logit의 범위는 [−∞,∞]">[−∞,∞]이다.아래 그림은 확률과 logit의 비선형 관계를 보여준다:딥러닝에서 logit[0,1]">[0,1] 범위인..
In-context Learning이란 Zero-shot프롬프트에 추가적인 설명 예제 없이 바로 문제를 해결하려는 세팅One-shot프롬프트에 추가적인 설명 예제 1개와 함께 문제를 해결하려는 세팅 Few-shot프롬프트에 추가적인 설명 예제 n개와 함께 문제를 해결하려는 세팅 추가적인 Fine-Tuning 없이도 In-context Learning만으로 원하는 결과를 얻는 것이 가능해지면서, 어떻게 프롬프트를 작성하면 LLM에게서 더 효과적인 정보를 얻어내는 프롬프트를 작성하 수 있는지를 연구하는 프롬프트 엔지니어링(Propt Engineering) 기법이 활발히 연구되기 시작하였다.
[Python] __post__init() __post_init__()는 @dataclass를 사용할 때 자동으로 호출되는 초기화 후(post-initialization) 메서드다.즉, @dataclass가 __init__()을 자동으로 만들어준 다음 그 이후 추가 초기화 로직을 수행할 때 사용한다. dataclasses 모듈을 사용하면 다음과 같이 __init__()이 자동으로 생성된다:from dataclasses import dataclass@dataclassclass User: name: str age: int 이 코드는 내부적으로 아래와 같은 __init__()을 자동 생성한다:def __init__(self, name: str, age: int): self.name = name self.age = age 그런데 _..
[자료구조] 그래프 그래프란?- 노드(node)와 노드들을 연결하는 간선(edge)을 하나로 모아 놓은 자료구조- ex) 트리: 사이클이 허용되지 않는 그래프그래프 관련 용어 정리정점(vertex): 노드를 정점이라고 표현하기도 한다.인접 정점(adjacent vertex): 간선으로 직접 연결된 정점 혹은 노드차수(degree): 무방향 그래프에서 하나의 정점에 인접한 정점의 수. 위 그래프에서 A의 차수는 3이다.진출차수(out-degree)/진입차수(in-degree) : 방향그래프에서 사용되는 용어진입차수 는 외부 노드에서 들어오는 간선의 수진출 차수 는 한 노드에서 외부로 향하는 간선의 수,그래프의 특징그래프의 순회는 DFS(깊이 우선 탐색), BFS(너비 우선 탐색)으로 할 수 있다.그래프에는 루트 노드, 부모-..
[알고리즘] 위상 정렬 (Topological Sort) 위상- 항목 간의 상대적인 위치나 순서를 의미 (컴퓨터 과학에서의 특별한 의미)- 즉, 어떤 노드(작업, 과목 등)가 다른 노드보다 먼저 와야 하는지, 또는 먼저 수행되어야 하는지에 대한 순서의 구조(structure)를 뜻함.위상 정렬- 방향 그래프에서 노드들 간의 선후 관계(의존성)를 고려해 순서를 정렬하는 것- DAG(Directed Acyclic Graph)에만 적용이 가능하다. (사이클이 발생하는 경우 위상 정렬을 수행할 수 없다)위상 정렬 알고리즘 특징1. 현재 그래프는 위상 정렬이 가능하지2. 위상 정렬이 가능하다면 그 결과는 무엇인지위상 정렬 수행 알고리즘 설명1. 진입차수가 0인 정점을 큐에 삽입합니다.2. 큐에서 원소를 꺼내 열결된 모든 간선을 제거합니다.3. 간선 제거 이후에 진입차수..
[MLOps] Triton Inference Server triton-inference-server/server github의 tutoritals/Conceptual_Guide 참고- config.pbtxt: model configuration-InferenceServerClient 객체를 사용할 때는 하나의 스레드에서만 사용해야 하며, 여러 스레드에서 동시에 접근하거나 호출하는 것을 피해야 한다.만약 여러 스레드에서 서버와 통신해야 한다면, 각 스레드마다 별도의 InferenceServerClient 객체를 생성해서 사용하는 것이 안전- model_control_mode- strict_model_config모델 버저닝폴더를 추가함으로써 모델 버저닝이 가능하다.model_repository/├── text_detection│ ├── 1│ │ └── ..
[책 리뷰] 대규모 서비스를 지탱하는 기술 강의 1. 대규모 서비스와 소규모 서비스소규모 서비스와 대규모 서비스의 차이확장성과 부하분산- 대량의 액세스가 있는 서비스에서는 서버 1대로 처리할 수 없는 부하를 어떻게 처리할 것인지가 큰 문제다.- 최근 10년 동안의 트렌드로는 이른바 '스케일아웃(scale-out)'이 이 문제에 대한 전략의 기초가 된다.- 스케일아웃은 서버를 횡으로 전개, 즉 서버의 역할을 분담하거나 대수를 늘림으로써 시스템의 전체적인 처리능력을 높여서 부하를 분산하는 방법이다.- 반면 스케일업(scale-up)은 하드웨어의 성능을 높여 처리능력을 끌어올리는 방법이다.- 스케일아웃 전략 채용시 고려해야 하는 점 - 사용자로부터의 요청을 어떻게 분배할 것인가? -> 로드밸런서 - 데이터 동기화 - 네트워크 통신의 지연시간대규..
[Python] [정렬] Timsort 파이썬의 내장 정렬 함수 sorted()와 리스트의 .sort() 메서드는 시간복잡도 O(n log n)을 가진다.sorted()는 새로운 리스트를 반환.sort()는 기존 리스트를 제자리(in-place)에서 정렬파이썬은 정렬을 위해 Timsort라는 알고리즘을 사용Merge Sort와 Insertion Sort를 결합한 하이브리드 알고리즘최악의 경우 (Worst case): O(n log n)평균적인 경우 (Average case): O(n log n)최선의 경우 (Best case, 거의 정렬되어 있는 경우): O(n)