전체 글
- Padas 편집 2024.05.17
- 혼자 공부하는 첫 프로그래밍(개정판) 2024.04.25
- LLM 개발을 더 간편하게 랭체인의 이해 2024.04.14
- 1. Local LLM에 대하여 2024.04.12
- 0 환경 설정 - ollama 설치 2024.04.10
- 파이썬 가상환경 venv 2024.04.01
- '24 3월 영어 단어 2024.03.03
- 2. 머신러닝과 미분,편미분,chaing rule... 2024.03.02
Padas 편집
혼자 공부하는 첫 프로그래밍(개정판)
1. 왜 파이썬인가
전산을 전공하고, 통신 서비스를 기획하고 협력사와 개발과 관련된 일을 하고 있는 나에게 프로그램으로 생각된 것을 구현하는 일은 아직도 흥미가 있다.
첫 직장부터 백엔드에서 C 언어로 월급을 받았는데, 2~3년 전에 업무로 간단한 SQL을 써야 할 일이 있었는데..구닥다리 SQL을 사용하기 싫어 파이썬을 접하면서 신세계를 맛 보았았는데.
- C에서는 필요한 함수나 라이브러리를 직접 개발을 하였는데, 파이썬은 너무 훌륭한 오픈 소스가 많다.
- 인공지능의 기본 알고리즘과 서비스들을 위한 생태계는 파이썬으로 부터 시작한다.
다양한 개발 언어가 있지만, '24년 파이썬 사용률은 1위이다. 사용되는 분야에 맞는 개발 언어를 사용해야 겠지만, 파이썬으로 첫 프로그래밍을 시작하면서 개념과 기능을 학습 후에 만약 다른언어를 사용해야 하다라도 쉽게 적응을 하리라 생각이 된다.
출처 : https://www.tiobe.com/tiobe-index/
2. 왜 "혼자 공부하는 첫 프로그래밍인가"
대학생인 아이들의 전공은 이과이다. 그런데 프로그래밍은 전혀 관심이 없다. 굳이 직장생활의 업무가 아니더라도 생각을 표현하고 확인할 수 있는 프로그래밍을 접하였으면 하는 아빠의 마음에서, 책을 골라보게 되었다.
프로그래밍 기본서도 있지만, 기본서도 어렵거나 두려운 비전공자를 위한 입문서 책으로 관심을 갖고 읽어 보게 되었다.
"아빠가 선택한 프로그래밍 책이니 읽고 따라 볼래? 어려운 것이 있으면 아빠에게 물어보렴"..... 이런 심정으로..
책은 기본 데이타 구조, 제어문, 리스트와 딕셔너리, 함수의 내용을 다루고 있습니다. 각 내용은 개념, 눈 코딩, 실제 코딩, 연습문제등으로 구성이 되어 있습니다.
입문자를 위해 상세하게 기술이 되어 있어..(아빠가 보기엔,, 전공자가 보기엔) 좀 지나칠정도 상세한 것이 아닌가 싶기도 하지만, 또 다른 눈높이에서는 다를 수도 있을 것 같다는 생각이 드는군요..
그럴 때 좋은것이, 저자가 제공하는 동영상을 보면 좋겠다는 생각이 드네요.. (https://www.youtube.com/results?search_query=%ED%98%BC%EC%9E%90+%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94+%EC%B2%AB+%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D)
인터넷 게시판이나 유트브에는 많은 파이썬 학습자료들이 있습니다. 그것도 좋지만 책을 통해서 일관된 방향으로 학습을 하고, 필요 부분은 인터넷으로 보강을 하였으면 합니다.
혼자 공부하는 것이 힘들다면, "혼공 학습단"에 참여하여 같이 공부하는 것도 좋은 방법인것 같습니다.
(https://hongong.hanbit.co.kr/, '24년 6월 모집 예정이라는 군요)
우리 애들도 이 이책으로 혼공 학습단에 참여하여, 프로그래밍의 맛을 보았으면 좋겠군요..
프로그래밍 도전에 머뭇거리는 우리 아이가 이 책을 통해 성장하길 기대합니다.
'요즘 나는 > Books' 카테고리의 다른 글
하늘과 별과 바람과 인간 (0) | 2024.02.22 |
---|---|
'23년 독서기록 (0) | 2024.01.22 |
LLM 개발을 더 간편하게 랭체인의 이해
0. 잘 정리가 된 글
https://www.itworld.co.kr/news/307189
1. 모델 I/O는 프롬프트를 관리하고 공통 인터페이스를 통해 언어 모델을 호출하고 모델 출력에서 정보를 추출할 수 있게 해준다
2. 데이터 연결은 데이터를 로드, 변형, 저장 및 쿼리하기 위한 빌딩 블록을 제공한다
3. Chain : 구성 요소를 조합해서 하나의 파이프라인을 구성한다.
4. 메모리
메모리는 데이터를 저장하는 공간. 데이터는 대화과정에서 발생하는 데이터를 의미.
챕봇 앱은 이전 대화를 기억해야 하지만, LLM은 채팅 기록을 장ㅇ기적으로 ㅂ관하지 않는다.
대화 내용은 다음과 같은 형태로 저장될 수 있다.
- Conversation Buffer: 그동안의 모든 대화를 저장한다. 대화가 길어질 수록 메모리 용량이 증가한다는 점이 단점이다.
- Conversation Buffer Window: 마지막 k개의 대화만 저장한다. 최근 대화만 저장하기에 메모리 용량이 과도하게 늘어나지 않는다는 장점이 있지만, 이전 내용을 잊게 된다는 단점이 있다.
- Conversation Summary: LLM을 사용하여 대화 내용을 요약하며 저장한다.
- Conversation Summary Buffer: max_token_limit을 초과할 경우에 요약하여 저장한다. Buffer Window와 Summary의 결합이다.
- Conversation Knowledge Graph: 대화 속 주요 entity를 추출해 지식 그래프(knowledge graph)를 생성한다.
https://blog.futuresmart.ai/langchain-memory-with-llms-for-advanced-conversational-ai-and-chatbots
'머신러닝 > RAG' 카테고리의 다른 글
1. Local LLM에 대하여 (0) | 2024.04.12 |
---|---|
0 환경 설정 - ollama 설치 (0) | 2024.04.10 |
1. Local LLM에 대하여
Implementing RAG using Langchain Ollama and Chainlit on Windows using WSL
RUN LLMs locally
PrivateGPT,llama.cpp, Ollama, GTP4All, llamafile 과 같은 다양한 프로젝트에 대한 Overview
https://python.langchain.com/docs/guides/development/local_llms/
LangServe + Ollama
- ollama를 통해 OpenModel를 서버에 설치하고, Remote에서 Chain을 호출한다. 한글 모델(야놀자 제공,heegye님이 변환, Teddy님의 공개 강좌)
- '24 4/12부터 이 구조를 사용하고 개발 진행함..
- Teddy님의 소개 자료 https://github.com/teddylee777/langserve_ollama?tab=readme-ov-file
Ollama model 받기
1. Hugging Face에서 받기
# 1. https://huggingface.co/asiansoul/KoDolph-2x8b-GGUF 에서
# 2. kodolph-2x8b-Q8_0.gguf 모델을 받는 다고 가정한다.
#1. Model 다운로드 사용법
huggingface-cli download \
asiansoul/KoDolph-2x8b-GGUF \ #hugging face의 URL이다.
kodolph-2x8b-Q8_0.gguf \ # files and version dir에서 받고 싶은 모델이다.
--local-dir 본인의_컴퓨터_다운로드폴더_경로 \
--local-dir-use-symlinks False
#예시
huggingface-cli download \
> asiansoul/KoDolph-2x8b-GGUF \
> kodolph-2x8b-Q8_0.gguf \
> --local-dir /workspace/home/hankh/langserve_ollama/ollama-modelfile/LLAMA3-Ko-Instruct --local-dir-use-symlinks False
#2. Modelfile 설정
#Model파일을 만들거나 Get한다. kodolph-2x8b-Q8_0.gguf는 친절하게 Modelfile_Q5_K_M 파일을 제공한다.
#내용은 확인하세요
#3. Ollama 모델 등록
ollama create Llama3-KoDolph -f ./Modelfile_Q8_K_M
#4 Ollama List 확인
ollama list
NAME ID SIZE MODIFIED
EEVE-Korean-10.8B:latest c3ebb32b93a5 7.7 GB 2 days ago
Llama3-KoDolph:latest 915768bf8359 8.5 GB 11 seconds ago
gemma:7b-instruct a72c7f4d0a15 5.0 GB 12 hours ago
#5 Ollama 실행
ollama run Llama3-KoDolph
'머신러닝 > RAG' 카테고리의 다른 글
LLM 개발을 더 간편하게 랭체인의 이해 (0) | 2024.04.14 |
---|---|
0 환경 설정 - ollama 설치 (0) | 2024.04.10 |
0 환경 설정 - ollama 설치
1. Install Ollama - 로컬에서 무료로 사용할 수 있는 LLM 도구, Ollama 활용 가이드
- Ollama는 로컬에서 대형 언어 모델(LLM)을 쉽게 사용할 수 있도록 지원하는 플랫폼입니다. macOS, Windows(WSL2를 통한 설치 가능), Linux에서 간편하게 설치할 수 있으며, Docker를 지원하여 더욱 다양한 환경에서 활용 가능합니다. Ollama는 ollama run llama2와 같은 간단한 명령어로 빠르게 AI 모델과 상호작용할 수 있습니다. Llama 2, Mistral, Vicuna, LLaVa 등의 다양한 오픈 소스 모델을 지원하며, 사용자는 이들 중 필요한 모델을 선택하여 사용할 수 있습니다. 자세한 내용은 Ollama 공식 웹사이트에서 확인하실 수 있습니다.
- Installation on Linux https://github.com/ollama/ollama/blob/main/docs/linux.md
- # Run the most popular AI model among open licenses
ollama run mistral
참고 자료 : https://anpigon.tistory.com/434
실해예시
-Ollama WebUI 설치 하기
터미널 작업은 귀찮다. Web으로 제공된다. 참으로 대단한 사람들이 많다.
#리눅스 환경, NVIDIA GPU 사용한다. port를 설정하면 웹포트를 설정할 수 있다. 기본 포트는 3000
# Docker build
run-compose.sh --enable-gpu --webui[port=xxxx] --build
# Docker 실행
run-compose.sh --enable-gpu --webui[port=xxxx]
참고 자료 https://docs.openwebui.com/getting-started/
실행결과
그러나 '24 4/11부터 LangServe를 알게 된 이후부터 사용안함..
- LangServer + Ollama
(hankh) [hankh@tb-eipms-tau1 app]$ pwd
/workspace/home/hankh/langserve_ollama/app
(hankh) [hankh@tb-eipms-tau1 app]$ python server.py
도움 받은 글 : https://github.com/teddylee777/langserve_ollama?tab=readme-ov-file
- 랭체인으로 LLM기반의 AI서비스 개발하기
요즘 읽고 있는책이며, 소스는 아래 링크 참조
OpenAI대신 langserve_ollama로 변환하면서 적응하기...(아..가난뱅이)
https://github.com/gilbutITbook/080413
2. ChatGPT를 대신하는 Ollam LLM,Chat
최종 하려는 것은 유료 OpenAI사의 Chat, LLM 대신 Ollam를 통해 무료 model을 사용한다. 유료보다는 떨어지겠지만..
LangChain학습하는데는 충분하지 않을까...
1. LLM모델
%config Completer.use_jedi = False # JupyterNotebook에서 도움말 얻기..
from langchain_community.llms import Ollama
llm = Ollama(model="EEVE-Korean-10.8B")
2. Chat모델
# OpenAI대신 Ollama를 호출해서 학습을 한다.
# from langchain_openai import ChatOpenAI
# llm = ChatOpenAI()
from langchain_community.chat_models import ChatOllama
chatLlm = ChatOllama(model="EEVE-Korean-10.8B")
3. Embedding
embedding에 사용되는 모델은 좀 더 확인을 해보자
from langchain_community.embeddings import OllamaEmbeddings
embeddings = OllamaEmbeddings(model = 'EEVE-Korean-10.8B') ## OpenAI 임베딩 대신 Ollama를 사용한다
3. NVIDIA GPU 보는법
- nvidia-smi
- watch -n 1 nvidia-smi
https://velog.io/@claude_ssim/NVIDIA-GPU-%EB%B3%B4%EB%8A%94%EB%B2%95nvidia-smi
'머신러닝 > RAG' 카테고리의 다른 글
LLM 개발을 더 간편하게 랭체인의 이해 (0) | 2024.04.14 |
---|---|
1. Local LLM에 대하여 (0) | 2024.04.12 |
파이썬 가상환경 venv
tau1 샘플
- 가상환경 생성
python -m venv hankh - 가상환경 활성화
source hankh/bin/activate
venv 사용 방법
- 가상 환경 생성
Windows: python -m venv [가상환경명]
Linux/Mac: python3 -m venv [가상환경명] - 가상 환경 활성화
Windows: [가상환경명]\Scripts\activate
Linux/Mac: source [가상환경명]/bin/activate - 가상 환경 비활성화
모든 운영체제에서: deactivate - 패키지 설치
활성화된 가상 환경에서, pip install [패키지명] 명령어를 사용하여 패키지를 설치한다. - requirements.txt를 활용한 패키지 설치
requirements.txt 파일 내의 패키지를 한번에 모두 설치할 때는,
pip install -r requirements.txt 명령어를 사용하여 패키지를 설치한다. - 가상 환경 내 패키지 리스트 확인 및 requirements.txt 만들기
가상환경 내 패키지 리스트 확인: pip freeze - 가상환경 내 패키지를 requirements.txt 만들기
pip freeze > requirements.txt - 가상환경 삭제하기
가상 환경은 결국 폴더 형태로 저장되기 때문에, 해당 폴더를 삭제하면 가상 환경도 함께 삭제된다.
활용 예시
'FastAPI > 0 개발 환경' 카테고리의 다른 글
아나콘다 에서 가상환경 설정하기 (0) | 2022.02.18 |
---|
'24 3월 영어 단어
2. 머신러닝과 미분,편미분,chaing rule...
로직을 프로그래밍을 해야 하는 기존 방식과 달리, 머신 러닝은 결과 데이타를 이용하여 어떠한 추론 방식을 제공한다.
가장 기초적인 y=mx + b 모델의 선형회귀는 기울기(m), 절편(b)을 데이타로 부터 학습을 하게 된다. 다음 그림은 머신러닝의 일반적인 framwork이다.
1. forword pass : 임의의 m,b로 시작하여, 예측값 y_hat을 구한다.
2. cost 계산 : 예측값 y_hat 과, 실제값 y에 대한 cost 값을 구한다. 여기서 중요한 것은 모델에 따라 사용되는 cost 함수가 무엇인지 알고는 있어요 한다. 회귀에서는 MSE를 사용한다.
3. backward pass : chain rule을 이용하여, 파라미터인, m,b를 수정한다.
4. (3)을 이용하여, cost 값이 적어지는 방향으로 m,b를 적용한다. (1)의 단계로 진행한다. m,b는 (3)에서 사용하는 값을 사용한다.
아래 그림과 같은 데이타가 존재하고, 임의의 m, b로 시작한다고 가정을 한다.
cost가 적어지는 m,b를 chain rule을 이용하여 구하고, 이를 반복한다. 아래예는 1,000을 수행하고 있다.
Epoch 0, cost 8.57, m grad 23.2, b grad 3.6
Epoch 1, cost 4.08, m grad 14.8, b grad 1.91
Epoch 2, cost 2.25, m grad 9.49, b grad 0.831
Epoch 3, cost 1.51, m grad 6.11, b grad 0.15
Epoch 4, cost 1.2, m grad 3.96, b grad -0.28
Epoch 5, cost 1.07, m grad 2.59, b grad -0.552
Epoch 6, cost 1.01, m grad 1.72, b grad -0.723
Epoch 7, cost 0.981, m grad 1.17, b grad -0.829
Epoch 8, cost 0.962, m grad 0.82, b grad -0.894
Epoch 9, cost 0.948, m grad 0.595, b grad -0.934
Epoch 10, cost 0.936, m grad 0.452, b grad -0.957
Epoch 11, cost 0.925, m grad 0.361, b grad -0.969
Epoch 12, cost 0.915, m grad 0.302, b grad -0.975
Epoch 13, cost 0.904, m grad 0.265, b grad -0.977
Epoch 14, cost 0.894, m grad 0.241, b grad -0.976
Epoch 15, cost 0.884, m grad 0.225, b grad -0.973
Epoch 16, cost 0.874, m grad 0.214, b grad -0.969
Epoch 17, cost 0.864, m grad 0.207, b grad -0.965
Epoch 18, cost 0.854, m grad 0.202, b grad -0.96
Epoch 19, cost 0.845, m grad 0.199, b grad -0.955
Epoch 20, cost 0.835, m grad 0.196, b grad -0.95
Epoch 21, cost 0.826, m grad 0.194, b grad -0.945
Epoch 22, cost 0.817, m grad 0.192, b grad -0.939
Epoch 23, cost 0.808, m grad 0.191, b grad -0.934
Epoch 24, cost 0.799, m grad 0.189, b grad -0.929
...
Epoch 996, cost 0.0195, m grad 0.000685, b grad -0.00337
Epoch 997, cost 0.0195, m grad 0.00068, b grad -0.00335
Epoch 998, cost 0.0195, m grad 0.000677, b grad -0.00333
Epoch 999, cost 0.0195, m grad 0.000673, b grad -0.00331
이를 통해... 적절한 m,b를 구하게 된다.
머신러닝을 다시 공부할 때
- 모델의 정의
- 모델에 사용되는 cost function
도 같이 공부 필요하다
'머신러닝 > 기초수학 for ML' 카테고리의 다른 글
1. 선형대수학에 대한 단상 (0) | 2024.03.02 |
---|