이론 정리 153

RAG 이론 정리와 활용

chat APIAPI를 이용해 사용자가 모델 제어 가능Messages(주요입력)System : InstructionUser : 사용 유저Assistant : 동작 (From System)Request Bodymax_tokens : 최대 토큰 수 설정가능temperature : 얼마나 정적인 답을 할지(창의성)top_p : 확률 기반으로 예측 단어(토큰) 제한참고로 temperature 이랑 top_p 동시 조정은 추천되지 않는다.참고로 요청할 때에 Instruction 을 주면 원하는 응답이 나타나지 않을 수 있다.ex) prompt 요청에서 JSON으로 대답하쇼 하면 JSON이 아닐 수 있다는것.response_format 에서 {”type” : “json_object”} 이렇게 요청하면 항상 JSON..

이론 정리 2024.08.11

AI 기본 이론정리

먼저 요즘 자주 쓰이는 AI는 chatGPT나 claude 같은 애들이 있다.이런 것들을 LLM 이라 하는데, Large Language Model 이라고 대규모 언어 모델이라는 뜻이다.그러면 반대로 소규모도 있겠네? 하면 있다.SLM 이라고 하는데, 라마3가 대표적이다.AI 분류LLM대규모 언어 모델로, chatGPT나 gemini, claude 같은 애들이 대표적이다.데이터 갯수랑 성능의 관계가 선형이라는 연구 결과가 있다. 그렇기 때문에 모델의 크기를 기우는 데에 주력하는 방식이다.SLM소규모 언어 모델이다. 라마3 같은 애들이 있다.근데 보통 모델을 막 돌리는게 그리 쉬운거는 아니다. 그래서 SLM 의 수요와 연구도 활발하게 이루어지는 중이다. 작은 모델로 그나마 좋은 성능을 내는 방식이다.데이터..

이론 정리 2024.08.10

병렬성과 비동기성

병렬성과 비동기성경합 조건이란?2개 혹은 그 이상의 프로그램이 같은 자원에 동시에 접근하고 자원 사용 순서에 따라 결과가 달라지는 경우공유 자원?사실 대부분이 공유될 수 있다.메모리도 가능하고 프린터 사용도 그렇고 FPGA 등등도...프로세스와 스레드운영체제는 프로세스를 관리한다.프로세스란, 사용자 공간에서 실행되는 프로그램이다.멀티코어 시스템에서는 여러 프로그램이 병렬로 실행될 수 있다.그래서 이 병렬 프로그램이 자원을 공유하면 경합 조건이 발생할 수 있다.요즘에는 액티비티 핸들러는 더이상 처음부터 끝까지 한번에 실행이 끝나는 간단한 작업이 아니게 됐다.핸들러를 인터럽트 : 즉 핸들러가 실행하는 중간에 잠시 실행을 중단하면서 상태를 저장하고, 나중에 그 위치로 돌아와 실행을 재개할 수 있다는 뜻.위를 ..

간단하게 메서드 수행시간 로깅을 해보자! (feat. template callback, annotation)

간단하게 메서드 수행시간 로깅을 해보자! (feat. template callback, annotation)여기서는 그냥 메서드의 수행 시간을 파악하기 위한 예제이다.실제로는 다양한 곳에 활용이 가능하겠지.기본 세팅TestService.java@Servicepublic class TestService { public void doSomething() { System.out.println("류찬은 최고에요!!"); }}그냥 간단한 sout 하는 메서드를 만들고TestServiceTest.java@SpringBootTestclass TestServiceTest { @Autowired private TestService testService; @Test public..

Blocking, non-blocking, sync, async 간략한 정리와 합쳐 사용하기

Blocking, non-blocking, sync, async 간략한 정리와 합쳐 사용하기간단한 정리Blocking작업이 완료될 때 까지 호출한 쓰레드가 대기한다.Non-blocking작업이 완료되지 않아도 쓰레드가 대기하지 않는다.즉, 응답이 돌아오지 않아도 다른 작업을 할 수 있다.Sync작업이 완료될 때 까지 호출한 함수의 실행을 블로킹.제어권 반환 XAsync작업이 완료되기 전에 제어권을 반환하여 호출한 함수의 실행을 블로킹하지 않는 방식.뭐 이렇다고 한다.이렇게 보면 뭔소리야? 싶은데 조금 더 상세히 알아보자.세부적인 차이저 둘의 차이는 결국 "호출된 함수" 와 "호출한 함수" 에서 온다고 생각한다.Blocking / Non-blocking이 둘은 호출한 쪽이 대기하는지 여부가 중요하다.즉, ..

이론 정리 2024.06.24

TDD 장단점 - Bob martin 과 Jim Coplien 토론을 보고

TDD 장단점 - Bob martin 과 Jim Coplien 토론을 보고https://www.youtube.com/watch?v=eRxc4PD6RN0일단 Bob은 TDD 신봉 Jim은 정반대TDD 3가지 법칙실패하는 단위 테스트 작성 전까지는 한 줄의 상용 코드를 작성할 수 없다.실패하기에 충분한 양의 단위 테스트만 작성해야 한다. (컴파일이 안되는것도 실패에 해당)현댖 실패하는 테스트 코드들을 성공시킬 만큼만 상용 코드를 작성해야 한다.즉 지금 실패하는 코드에 해당하는것 이상의 코드는 작성할 수 없다는 것위의 내용은 30초단위로 실패코드-상용코드를 한꺼번에 작성한다는것을 의미한다.TDD의 2가지 문제(Jim이 경험한)아키텍처나 프레임워크 없이 TDD를 사용한다.kent(아마 켄트백?) 이 얘기한 내용..

이론 정리 2024.05.25

MySQL 8.0부터 추가된 explain analyze 에 대해 ARABOZA!

MySQL 8.0부터 추가된 explain analyze 에 대해 ARABOZA!MySQL에서 쿼리 인덱스랑 실제 동작 관련 테스트를 하는데... 엄청 많은 조건이 있어서 대체 어디서 시간이 오래걸리는지 이런거가 매우 헷갈렸다.이 때에 아주 유용한게 explain analyze 이다.사실 이거 보면 매우매우 잘 설명되어있기는 한데 걍 정리해본다.실제로 경험한 일인데, 상세한 내용을 말하기는 어렵고 통해 그냥 이거의 장점만 훑으려 한다.일단 기존의 explain 과 다른 점은explain은 실제로 SQL 쿼리를 실행하지 않은 상태에서 옵티마이저가 계획한 쿼리 실행 계획을 보여준다.explain analyze 는 쿼리를 실제로 실행한 뒤에 그 결과를 통해 실행 계획을 보여준다. 또, 실제로 실행하면서 각 단..

배민에서 대규모 트랜잭션 처리하는법

배민에서 대규모 트랜잭션 처리하는법사실 이번에 브런치에서 좀 정보성 데이터를 많이 가지고 이걸 전달해야 하는 개발사항이 있었다.뭔가 많은 조인과... 많은 데이터가 필요하고 약간의 실시간성을 가진 친구를 만들어야 하는데 이걸 어떻게 할까 하다가 여기까지 굴러들어왔다.근데 들어보니까 내가 고민한 것과 매우 비슷했던 것 같고 좋은 내용이 많아 간략히 정리해 보았다.https://www.youtube.com/watch?v=704qQs6KoUk요거배민 주문 시스템의 특징배민 주문 시스템장바구니, 주문하기, 주문내역 같은 애들을 만드는곳이다.여기 시스템은 12시, 18:30 같은 식사시간에 주문수 추이가 확 늘어난다.즉 트래픽이 특정 시간에 집중된다는것이다.MSA배민은 수많은 시스템으로 이루어져 있다.그냥 주문 ..

이론 정리 2024.05.20

한 권으로 읽는 컴퓨터 구조와 프로그래밍 5장 정리

기본적 구조 요소기본적으로 폰 노이만 구조, 하버드 구조 이렇게 있는데 둘의 차이는 메모리 배열뿐이다.폰 노이만 구조는 메모리 버스와 주소 버스가 하나뿐이다.폰 노이만 구조가 약간 더 느리지만 하버드 구조는 두번째 메모리 처리를 위한 버스가 더 필요하다.프로세서 코어위의 두 구조는 모두 CPU가 하나뿐이다.단일 CPU보다 성능을 높이기 위해 멀티프로세서가 도입됐는데 병렬화에서 문제가 있었다.예전에는 CPU라는거를 요즘은 프로세스 코어라고 하고, 이거를 여러개 쓰는거를 멀티코어라고 한다.마이크로프로세서와 마이크로컴퓨터마이크로프로세서메모리와 I/O가 프로세서 코어와 같은 패키지에 들어 있지 않음마이크로컴퓨터모든 요소를 한 칩 안에 패키징일단은 메모리가 차지하는 영역이 꽤 크기 때문에 마이크로프로세서보다 마이..

virtual thread 기본 공부

https://www.youtube.com/watch?v=BZMZIM-n4C0요거 보고 정리해 봤다.Virtual Thread안정성과 처리량에 대한 고민(전사 게이트웨이) -> 높은 트래픽에의 높은 처리량!!Kotlin의 coroutinejava project loom 에 도입된 virtual thread일단 virtual thread는 2018년에 project loom 으로 시작된 경량 스레드 모델이다.그리고 23년 JDK21에 정식 feature로 추가됨.장점스레드 생성 및 스케줄링 비용이 기존 스레드보다 저렴스레드 스케줄링을 통해 nonbloking I/O 지원기존 스레드를 상속해서 사용 가능스레드 생성 및 스케줄링 비용 저렴기존 자바 스레드는 생성 비용이 크다.자바에서 미리 여러 요청 처리를 위..

이론 정리/java 2024.04.27