분류 전체보기

·LLM
sLLM을 로컬에서 테스트 해볼 때, 사용해볼 수 있는 도구들이 꽤 다양하단 걸 이번 기회에 알게 되었다. (ollama, llama-cpp, lm studio,...)기존에 ollama를 사용해 embedding model을 사용했던터라, 기존에 설치 되어있던 ollama를 그대로 이번 테스트에 사용해보려고 했는데, 처리 속도가 생각보다 너무 느렸기에 대안이 필요했다!STT로 전사된 텍스트를 LLM을 사용해 후처리로 실시간 수정하는 것을 목표로 , 어느 sLLM 모델을 사용해야할지 찾아보는 테스트였기 때문에, 추론 비용(속도, 메모리 사용량 등)이 중요한 이슈였다.ollama가 llama.cpp를 래핑한 도구이기에 같은 모델을 로컬에서 돌리더라도, llama.cpp는 ollama보다 추론이 훨씬 빠르다..
문제백준 14501 | 퇴사✔️ 250729 | [1차] 못 풀고 넘어감문제상담원으로 일하고 있는 백준이는 퇴사를 하려고 한다.오늘부터 N+1일째 되는 날 퇴사를 하기 위해서, 남은 N일 동안 최대한 많은 상담을 하려고 한다.백준이는 비서에게 최대한 많은 상담을 잡으라고 부탁을 했고, 비서는 하루에 하나씩 서로 다른 사람의 상담을 잡아놓았다.각각의 상담은 상담을 완료하는데 걸리는 기간 Ti와 상담을 했을 때 받을 수 있는 금액 Pi로 이루어져 있다.N = 7인 경우에 다음과 같은 상담 일정표를 보자.1일에 잡혀있는 상담은 총 3일이 걸리며, 상담했을 때 받을 수 있는 금액은 10이다. 5일에 잡혀있는 상담은 총 2일이 걸리며, 받을 수 있는 금액은 15이다.상담을 하는데 필요한 기간은 1일보다 클 수 있..
문제백준 14499 | 주사위 굴리기✔️ 250728 | [1차] 못 풀고 넘어감문제크기가 N×M인 지도가 존재한다. 지도의 오른쪽은 동쪽, 위쪽은 북쪽이다. 이 지도의 위에 주사위가 하나 놓여져 있으며, 주사위의 전개도는 아래와 같다.지도의 좌표는 (r, c) 로 나타내며, r는 북쪽으로부터 떨어진 칸의 개수, c는 서쪽으로부터 떨어진 칸의 개수이다. 24 1 3 5 6주사위는 지도 위에 윗 면이 1이고, 동쪽을 바라보는 방향이 3인 상태로 놓여져 있으며, 놓여져 있는 곳의 좌표는 (x, y) 이다. 가장 처음에 주사위에는 모든 면에 0이 적혀져 있다.지도의 각 칸에는 정수가 하나씩 쓰여져 있다. 주사위를 굴렸을 때, 이동한 칸에 쓰여 있는 수가 0이면, 주사위의 바닥면에 쓰여 있는 수가 칸에 복..
본격적으로 for문 문제를 풀기 전에 주의해야 할 점이 있다.입출력 방식이 느리면 여러 줄을 입력받거나 출력할 때 시간초과가 날 수 있다는 점이다.이를 위해, Python을 사용하고 있다면, input 대신 sys.stdin.readline을 사용할 수 있다.input vs. sys.stdin.readline차이점 1sys.stdin.readline을 사용하는 경우, 맨 끝의 개행문자까지 같이 입력받기 때문에 문자열을 저장하고 싶을 경우, .rstrip()을 추가로 해 주는 것이 좋다.# 입력으로 abc를 치고 엔터를 친 경우,s = input() # 이 때, s는 "abc" len(s) # 3s = sys.stdin.readline() #이 때, s는 "abc\n"len(s) # 4# sys.s..
A, B = map(int, input().split())print(int(A 위 처럼 쓸 수도 있지만아래처럼 쓸 수도 있다.print()의 `end=" "` 인자 사용하기# 변수 선언, 입력inp = input()arr = inp.split()a = int(arr[0])b = int(arr[1])# 출력if a 이렇게 쓰면, `if a
A, B = map(int, input().split())if A >= B: print(1)else: print(0)if A > B: print(1)else: print(0)if B >= A: print(1)else: print(0)if B > A: print(1)else: print(0)if A == B: print(1)else: print(0)if A != B: print(1)else: print(0) 손 아프게 다 쓰고 있었는데..위의 코드를 아래처럼 간단하게 쓸 수 있었다(!) `True`, `False` 를 1과 0으로 print하고 싶으면, 그냥 `int` 처리를 하면 된다# 변수 선언, 입력inp = input()arr = ..
·LLM
요즘 챗GPT 같은 대규모 언어 모델(LLM)의 능력을 보면 똑똑하다는 생각이 들다가도, 가끔 답변이 너무 느리게 나와 답답할 때가 많다. LLM, 성능은 좋은데 왜 이렇게 느린 걸까? 이 속도로는 실시간 서비스는 어림도 없겠다는 생각이 든다. 이런 고민을 해결해 줄 기술이 바로 Speculative Decoding이다. 큰 LLM의 성능은 그대로 유지하면서 추론 속도만 빠르게 만드는 방법이다. 심지어 모델을 추가로 학습시킬 필요도 없다. 이번 포스팅에서는 Speculative Decoding이 무엇인지, 어떤 원리로 속도 문제를 해결하는지 찾아본 내용들을 정리해보려 한다. 문제점 1: LLM은 왜 느릴까? - 한 글자 한 글자 생성하는 구조LLM이 텍스트를 생성하는 방식을 보면 그 이유를 알 수 있다...
·Pytorch
Python, 거대한 데이터셋 앞에서 막막할 때 — IterableDataset학습용 데이터셋이 너무 커서 OOM(Out Of Memory) 오류로 밤새 돌린 코드가 멈춰버린 경험, 한 번쯤 있을 거다. 특히 오디오나 이미지처럼 개별 파일 용량이 큰 데이터를 다루다 보면 이런 일이 자주 생긴다.이번에는 그 메모리 문제를 꽤 깔끔하게 해결해주는 Hugging Face datasets 라이브러리의 streaming=True 옵션, 즉 IterableDataset 사용법을 오디오 처리 예제를 통해 정리해봤다.기존 방식의 문제보통 데이터를 불러올 때는 이런 식으로 한다.# dataset = load_dataset("csv", data_files="my_large_data.csv")# --> 이 순간, CSV 전..
Joy Shin
'분류 전체보기' 카테고리의 글 목록