DEV
-
HuggingFace에서 Transformer 모델을 fine-turning 해보자DEV 2023. 12. 8. 21:27
Hugging Face The platform where the machine learning community collaborates on models, datasets, and applications. https://huggingface.co/ 자연어 처리(Natural Language Processing) NLP(Natural Language Processing)란 사람의 언어와 관련된 모든 것을 이해하는 데에 중점을 둔 언어학 및 기계 학습(머신 러닝) 분야를 말합니다. NLP의 목적은 단순히 하나의 개별 단어를 이해하는 것을 넘어, 해당 단어들의 문맥을 이해하는 것 전체 문장 분류(Classifying whole sentences): 리뷰(review)의 감정(sentiment)을 식별, 이메일..
-
Virtual Thread & Structured Concurrency & CoroutineDEV 2023. 12. 3. 12:34
2023년 9월 JDK21에 적용되는 virtural thread에 대한 글입니다. virtural thread가 추가된 배경을 살펴보고, 멀티스레드 사용 시 생기는 동시성, 동기화 이슈는 어떻게 해결하려 하는지(Structured Concurrency, 구조화된 동시성), 그리고 코루틴과는 무엇이 다른지 알아보았습니다. Project Loom https://wiki.openjdk.org/display/loom/Main purpose of supporting easy-to-use, high-throughput lightweight concurrency and new programming models on the Java platform. Project Loom의 결과물 중 하나 → Virtual Thre..
-
LangChain에 대하여DEV 2023. 12. 3. 12:06
LangChain의 component소개, 테스트 코드, 그리고 LangChain과 관련된 그 외 프로젝트들... LangChain LangChain is a framework for developing applications powered by language models. 언어 모델이 API를 통해 호출하는 것뿐 아니라 아래의 기능도 수행할 것이라고 믿는다. 1. 외부 데이터 인식 2. 외부 환경과 상호작용 Lang + Chain - LLM에 프롬프트를 채이닝하여 한번에 복잡한 명령을 내릴 수 있는 기능이 핵심인 것 같다. Component Schema, Models, Prompts, Indexes, Memory, Chains, Agents…. Model, Prompts, Output Parsers ..
-
JIT compiler & GraalVM in javaDEV 2023. 12. 3. 09:28
자바 성능향상을 위한 시도들. JIT compiler부터 GraalVM까지 JIT(Just-In-Time) Compiler JVM의 일부, 자바를 고성능으로 만드는데 큰 역할 java는 byte code로 컴파일, 컴파일 한 byte code를 JVM이 런타임시 native code로 변환하여 실행 처음에는 인터프린터 방식으로 바이트 코드 실행 인터프린터 사용 → 초기 실행 속도는 빠를 수 있지만, 컴파일러 보다 성능 ⬇️ JIT compiler 두 가지 방식을 모두 사용 JVM에서 처음 호출되자마자 컴파일되는 것은 아니고, 메서드 호출마다 횟수를 기록, 특정 수치를 초과하면 컴파일(warm up → C1, C2 컴파일 이후) C1, C2 컴파일러 C++로 작성 C1: 초기 실행 속도에 중점, 빨리 코드..
-
Spring batch jobScope, stepScopeDEV 2023. 12. 2. 21:21
Spring batch의 jobScope, stepScope를 알아가기 위한 흐름 jobScope, stepScope → bean scope → application context → IoC, DI IoC부터 시작해 보자. IoC (Inversion of Control) 제어의 역전 - 객체 생명주기, 메서드 호출 외부에서 관리 일반적인 의존성에 대한 제어 → 객체 내에서 제어 public class Mundo { private FrostfireGauntlet frostfireGauntlet; private BerserkerShoes berserkerShoes; private DoranShield doranShield; public Mundo(){ this.frostfireGauntlet = new Fr..
-
Elasticsearch에서의 relationDEV 2023. 12. 2. 20:50
반복되는 일정을 검색하는 방법에 대한 이야기 Elasticsearch에서 어떻게 RDB처럼 relation을 만들어 join검색을 할 수 있을까? radio_progaram의 방송시간 데이터 Data { "program_name": "TBS 기상정보", "channel_name": "TBS FM", .... "routine": [ { "days": [ "MON", "TUE" ], "start_time": 658, "end_time": 700 }, { "days": [ "MON", "TUE" ], "start_time": 958, "end_time": 1000 } ] } User Query 이번주 월요일 라디오 월요일 밤 10시 라디오 오늘 아침 라디오 이번 주말 라디오 How to search on ES..
-
Spring batch integration test (feat.Elasticsearch)DEV 2023. 12. 2. 20:10
Purpose of Integration Test 여러 컴포넌트 간 상호작용이 정상적으로 수행되는지 DAO가 올바르게 연결돼 있어서 원하는 데이터를 저장, 읽을 수 있는지? Test Environment Setup 멱등성(idempotent) 유지 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질 멱등성이 깨지기 쉬운 구간 → 외부 모듈 → DB 개발 DB로 테스트를 하기엔 좀 그렇고, 테스트만을 위한 DB를 세팅하기도 좀.. DB 테스트 환경 구축 방법 local DB 설치 in-memory DB - H2, 빠르지만 특정 DB에 특화된 기능 지원 x 사용하는 DB의 Embedded Library 사용 - in-memory DB 이슈 해결 - embedded를 지원하지 않거나 특정 버전, OS지원 ..
-
K8S, DNS 간헐적 5~15초 지연DEV 2023. 12. 2. 19:54
Background k8s 일부 pod에서 간헐적으로 5초 단위의 타임아웃 발생 5*x초의 지연이 DNS조회로 인한 이슈라는 문서를 찾음 DNS Domain Name System 도메인명(www.daum.net) → IP주소(12.34.56.67) In Linux Linux 환경에서 DNS를 사용하는 방법 크게 2가지 /etc/hosts 도메인명으로 IP를 찾을 때 가장 먼저 열어보는 파일 /etc/resolv.conf DNS resolver, DNS 서버 목록을 기록한 파일 /etc/hosts 파일에 도메인명이 존재하지 않을 경우 /etc/resolv.conf에서 도메인명을 검색할 도메인 서버의 주소를 찾는다. DNS in K8S CoreDns v.1.12 이후로 k8s에서 사용을 권장하고 있는 도메인..