목록전체 글 (349)
미누에요

어쩌다보니 올해도 논문을 투고하게 되었다.논문이라기보다는, 대학생 논문 경진대회라 보통의 사람들이 생각하는 것만큼 대단한 일이 아닐테지만, 그래도 또하나의 경험을 쌓았다. 매년 "한국정보기술학회"에서는 하계, 추계 두 번의 대학생 논문 경진대회를 개최한다.그 중 오는 6월에 예정되어 있는 하계 대학생논문경진대회에 교수님의 부탁으로(?) 투고를 하였다. 음.. 매번 생각하는 거지만 연구자의 길은 나랑 맞지 않는 거 같다. (실질적 기술 개발보다 글을 작성하는 데 더 많은 에너지를 소모하게 되는 거 같다.)하지만 뭐 문서화하는 능력도 유지보수 관점에서는 중요한 스킬이니까, 이번에도 덥석 도전했다. 저번 추계 대학생논문경진대회에서도 생각했지만, 내가 개발하고 있던 웹/앱이 있었더라면, 혹은 뭔가 만들어보던 프..

ChatGPT 등과 같은 AI 툴이 널리 사용되면서 LLM에 대해 정말 많은 언급이 이루어지고 있고, 여러 AI 기술 중 LLM에 대해서 관심을 갖는 사람들이 증가하고 있다.나도 그 중 하나이다. 이번 게시글에서는 연구실에서 간단하게 해본 LLM 파인튜닝에 대한 이야기를 담아보고자 한다.(참고로, 나는 AI에 대한 깊은 지식이 있지 않기에, 내용을 100% 신뢰하지는 말기 바란다.) LLM(Large Language Model)LLM, 그놈의 LLM 도대체 LLM이란 무엇일까 ? 영어로 된 약자를 풀어서 보면 단순하게 이해할 수 있다. Large Language Model, 즉 겁나 큰 언어모델이라는 뜻이다.수많은 양의 언어 데이터가 모델에 학습되어 있다. 여기서 말하는 수많은 데이터는 기본적으로 bi..

현재 개인적으로 공부 차 프로젝트를 진행 중인데, 이 프로젝트 중 Button 컴포넌트를 제작하고 있었다. 현재 TypeScript + module.scss를 사용하고 있는데, tsx 파일에서 특정 색상값을 변수 형식으로 넘겨주고, scss 파일에서 해당 값을 사용하고 싶었다.즉, tsx에서 변수를 넘겨받아 scss에서 사용하고 싶었던 것이다. const ImageCircle = styled.div` --size: ${props => props.size}px; width: var(--size); height: var(--size); border-radius: var(--size); background-image: url(${props => props.src}); backg..

개발을 하다보면 REST API라는 용어를 많이 보게 된다.나도 이때까지 무슨 API인지 제대로 모르고 있었는데, 이번 기회에 정리해보고자 한다. REST가 뭔가 ?REST(Representational State Transfer)는 자원을 이름으로 구분하고, 해당 자원을 주고받는 것을 의미한다.여기서 자원은 그림, 이미지, 텍스트 등을 의미하고, 그 자원의 이름으로 해당 자원을 표현하게 된다.웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 개발 아키텍처의 한 형식기본적으로 웹과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대로 활용할 수 있음모든 자원에 고유한 URI 가 등록됨 REST 의 구성 요소자원(Resources) : 각 자원들은 고유한 HTTP URI를 가지고 있으며, 해..

최근에 LLM을 파인튜닝해보고 있다.그 중 이번에 사용한 Unsloth에 대해서 기록해보고자 한다. Unsloth Unsloth는 파인튜닝을 위한 Python 라이브러리이다.파인튜닝을 할 때, 기존 LLM을 불러와 특정 추가적인 데이터셋으로 학습을 시키게 되는데, 기존 모델의 크기가 보통 굉장히 크기 때문에 추가적으로 학습을 시킬 때 컴퓨터 자원을 많이 필요로 할 수밖에 없다. 이러한 문제점을 해결하기 위해 보다 가볍고, 최적화한 도구인 Unsloth를 사용하는 것이다. 파인튜닝이 뭔데 ?파인튜닝이란 기존 모델에 새로운 데이터들을 추가적으로 학습하여 특정 분야에 답변을 더 잘하도록 만드는 방식이다.Unsloth 공식 웹페이지에서는 "도메인 지식을 향상시켜 특정 작업에 대한 성능을 향상시키는 것, 역전..

LLM 파인튜닝을 하던 중 아래와 같은 에러를 맞이했다.NotImplementedError: Cannot copy out of meta tensor; no data! 왜 이런 에러가 뜨는지 몰라서, 구글링을 했다. 코드 상으로 문제는 없었다. 그래서 더 의문이었다. https://stackoverflow.com/questions/77547377/notimplementederror-cannot-copy-out-of-meta-tensor-no-data NotImplementedError: Cannot copy out of meta tensor; no database_model = AutoModelForCausalLM.from_pretrained( 'meta-llama/Llama-2-7b-chat-hf', t..

웹 프론트엔드 개발자로 수많은 프로젝트를 진행하다 보면 컴포넌트의 사이즈를 정할 때 px을 사용하지 말라고 많이 들었을 것이다. px은 정적인 단위로, 데스크톱, 태블릿, 모바일까지 다양한 기기로 웹페이지를 접속하는 현 시점에서 불리하기 때문이다.그와 동시에, rem 혹은 em을 사용하라는 말도 들어봤을거라 생각한다. remrem은 root 폰트 사이즈를 1rem으로 계산하여 사용하는 방식이다. 부모 폰트 사이즈를 기준으로 하는 em과는 다르게, 가장 상위에 존재하는 root의 폰트 사이즈를 기준으로 하기에 보다 일관적인 UI를 나타낼 수 있다. 하지만 나는 개발을 하면서 왜 rem이 반응형인지 의문이 들기 시작했다.root 의 폰트 사이즈를 기준으로 철저히 계산된 정적인 값이 아닌가? 하지만 언제까지나..

비교적 최근 AI 시장을 떠들썩하게 했던 그 DeepSeek. AI 의 세계는 너무 깊고 심오하기에 컴퓨터공학전공의 기준에서, 적당히 호기심을 가지고 있는 입장에서 가볍게 파고들어 보았다. DeekSeek가 무엇인가DeekSeek는 중국 헤지펀드 회사 환팡퀀트 소속 인공지능 연구 기업의 이름이다.기업의 이름이자, 해당 기업에서 만든 AI 모델의 이름이기도 하다. 현재 시중에서 많이 거론되는 모델은 DeekSeek V3, DeepSeek R1이 있다. 신생 기업인가 ? 왜 이전까지는 들어보지 못했던거지 ?2025년 1월, DeekSeek R1 모델이 출시되고, 사람들이 DeekSeek라는 중국의 기업에 대해 관심을 가지기 시작했다. 하지만 그 전부터 DeepSeek는 꾸준히 모델 연구를 이어오고 있었다..

최근 프로젝트를 하던 중 다른 팀원의 코드에 interface를 사용하여 props를 받는 부분을 보았다. typescript를 아직 많이 사용해보지 않아 기본적으로 type을 사용하고 있었는데, 이 코드를 보고 interface와 type은 각각 어떨 때 사용하는거지 ? 라는 의문이 들어 찾아보게 되었다. type 을 사용하는 경우단순히 원시 값, 튜플(tuple) 등을 선언할 때!type Name = string; type은 일반적으로 모든 선언에 사용할 수 있다.선언해둔 것을 확장할 수 없다.type Student = { name:string; stdNo:string;};type Student = { age: number;}; // Error 또한 type으로 선언한 것들은 선언적 확장(..

프론트엔드 개발을 하다보면 처음에 배웠던 JavaScript 외에도 TypeScript라는 것을 사용하게 된다.이름만 들었을 때, type이 추가된건가 ? 싶다. 이에 대해서 차근차근 정리해보자. TypeScriptTypeScript는 JavaScript의 상위 집합이다. 즉 쉽게 말해서, JavaScript에서 type을 추가하여 확장한 언어라고 생각하면 좋다. JavaScript에다 타입 관련 기능을 추가한 언어이므로, 기존 JavaScript에서 사용하던 문법들을 100% 사용할 수 있다. TypeScript 공식 웹 페이지에서는 TypeScript의 강점을 위처럼 서술하고 있다.JavaScript에 추가적인 문법을 통해 타입 안정성을 확보하여 에러를 빠르게 잡을 수 있다.TypeScript는 J..