ChatGPT가 알려준 리스트를 나누는 방법들을 정리해두고자 한다. 1. 리스트를 특정 크기로 자르기 def split_list_into_chunks(lst, chunk_size): """ Split a list into chunks of the specified size. Parameters: - lst: The list to be split. - chunk_size: The size of each chunk. Returns: A list of chunks, where each chunk is a sublist of the original list. """ return [lst[i:i + chunk_size] for i in range(0, len(lst), chunk_size)] my_list = [..
일하면서 사용했던 정규표현식을 정리해두고자 한다. 1. HTML에서 주석() 부분 찾기 HTML에서 주석 부분만 찾는 표현식이다. 정규표현식: python으로는 아래와 같이 사용할 수 있다. text = """ 이것은 주석이 아닙니다 """ import re text = re.sub(r'','', text) text >>>> '\n이것은 주석이 아닙니다\n\n' 2. HTML에서 공백인 부분 제거 BeautifulSoup을 사용해서 표를 파싱한 후 soup.prettify(formatter="html")를 하면 불필요한 공백이 많이 생성된다. 이때 2개 이상 이어진 공백에서 하나만 남기고 나머지 공백들을 제거하는 표현식이다. 정규표현식: \B\s+|\s+\B^ python으로는 아래와 같이 사용할 수 있..
파이썬에는 웹소켓 사용을 위한 websocket, websockets(두개가 다른 거다) 라이브러리가 있다. 웹소켓 연결이 끊겼을 때를 대비하기 위한 방법이 각각 다른데 이를 간단히 정리해두고자 한다. 1. websocket websocket 라이브러리는 pip install websocket-client로 설치할 수 있다. 공식 github에 가서 보면 아래와 같은 설명이 있다(링크). The WebSocketApp run_forever loop will automatically try to reconnect to an open WebSocket connection when a network connection... run_forever does not automatically reconnect if ..
GPU 모니터링 툴이 별도로 없을 때 pynvml을 사용하여 GPU 사용량 정보 등을 로그로 남길 수 있는 방법을 정리하고자 한다. 1. GPU 정보 확인하기 import pynvml print("Driver Version:", pynvml.nvmlSystemGetDriverVersion()) >>>> Driver Version: 4xx.1xx.xx 2. GPU 사용량 체크하기 GPU가 여러 장 있을 때 GPU별 utilization, memory 사용량 평균을 다음과 같이 기록해둘 수 있다. from threading import Thread import numpy as np import torch .... if __name__ == "__main__": def schedule_gpu_memory_lo..
0. Abstract We consider an alternative approach: converting feedback to instruction by relabeling the original one and training the model for better alignment in a supervised manner 1. Introduction Human alignment를 위해 두 가지 정도의 방향성이 있음 Proximal Policy Optimization (PPO): rather complex, sensitive to hyperparameters, and requires additional training in the reward model and value network imitation ..
json보다 jsonl이 편할 때는 파일로 데이터를 읽고 쓸 때이다. json은 데이터를 한꺼번에 불러와야 하지만 jsonl은 file 객체로 읽고 쓰기 때문에 a 모드를 지원한다. 즉, jsonl 파일에 데이터 한줄만 추가하는 형태로 사용할 수 있지만 json은 그게 안된다. 1. 데이터 쓰기 주의사항은 indent=4을 주게되면 저장된 파일에 newline이 생겨 읽을 때 에러가 뜬다. 이거 빼준다. import json d = { "a":[1,2,3], "b":[4,5,6,7], "C": "qwer", "D": "한글" } data_list = [d]*4 with open("test.jsonl", "a") as f: for data in data_list: f.write( json.dumps(dat..
다음과 같은 dataframe이 있다고 하자. import pandas as pd import numpy as np df = pd.DataFrame( { 'Zodiac' : ['Libra','Capricorn','Scorpio','January','Scorpio', 'Capricorn','Capricorn', 'Taurus'], 'Month' : ['January', 'February', 'February', 'April', 'January', 'March', 'April', 'April'], 'values' : [23, 45,89, 91, "january", "february", "april", "january"] } ) df >>>> 이때 어떤 컬럼도 상관없이 단어 Jan을 포함하고 있는 row들을 ..
파이썬으로 작업을 하다보면 multiprocessing을 사용할 일이 생기는데, 사용법과 주의할 점을 정리하고자 한다. 1. Multiprocessing 사용하기 1) Process, Queue 기본적인 형태는 Process를 선언하여 새로운 프로세스를 만들 때 실행할 function과 arguement들을 넘겨주는 방식이다. 그리고 Queue를 사용하여 프로세스끼리 데이터를 주고 받을 수 있다. 주의할 점은 새로운 프로세스를 실행할 때 넘겨줄 function과 arguement들은 fork가 가능한 객체들이어야 한다. 대부분은 문제 없지만 GPU 자원을 활용하는 모델이나 threading 기반으로 돌아가는 객체들은 안될 때가 있다. 아래 예제는 consumer & producer 프로세스를 생성한 예시..
세션 시작 tmux new -s mysession 세션 종료 tmux kill-session -t mysession 세션 리스트 tmux ls 세션 접속 tmux attach -t mysession 세션 화면 빠져나오기 ctrl+b 후 d [참고] https://www.redhat.com/sysadmin/introduction-tmux-linux#:~:text=To%20start%20using%20tmux%2C%20type,window%2C%20and%20attaches%20to%20it. https://tmuxcheatsheet.com/
Docker는 시스템 자원을 많이 잡아먹는다. 특히 디스크 용량이 많이 필요한데 이때 필요한 명령어들을 정리하고자 한다. 1. Docker 용량 확인 docker system df >>>> TYPE TOTAL ACTIVE SIZE RECLAIMABLE Images 15 8 273GB 233.9GB (85%) Containers 21 11 393.7GB 127.5GB (32%) Local Volumes 11 6 2.264GB 846.2MB (37%) Build Cache 1 0 0B 0B 2. Docker cache 정리 Docker를 사용하다 보면 필요없는 layer등이 많이 남는다. 이를 정리할 수 있는 방법은 다양하다(참고). # 1) build시 사용된 cache 제거 docker builder p..
간단한 웹 데모를 개발하면서 겪었던 과정을 정리하고자 한다. 전체적인 구조는 다음과 같으며 Load Balancer(A)와 Web Server(B)는 별도의 서버로 구성하였다. 그리고 SSL 인증서를 도입하고자 한다. SSL 인증서를 발급받아 Nginx에 적용하면 HTTPS로 서비스를 할 수 있다. 환경정보는 다음과 같다. Ubuntu 20.04 Python 3.8 FastAPI 0.100.1 1. 도메인 연결 SSL 인증을 도입하기 위해서는 반드시 도메인이 있어야 한다. 이 블로그를 참고해서 세팅해주자. 2. Let's Encrypt 인증서 설치 Ubuntu에 certbot을 설치하자. sudo apt install certbot sudo apt install python3-certbot-nginx 이..
간단한 웹 데모를 개발하면서 겪었던 과정을 정리하고자 한다. 전체적인 구조는 다음과 같으며 Load Balancer(A)와 Web Server(B)는 별도의 서버로 구성하였다. 환경정보는 다음과 같다. Ubuntu 20.04 Python 3.8 FastAPI 0.100.1 1. Web Server FastAPI로 Frontend, Middleware, Backend를 구현하였고 이 레포를 기반으로 편하게 만들었다. 2. Nginx Nginx는 2004년에 개발된 비동기 이벤트 기반의 경량화된 웹 서버 프로그램이다. 20년된 프로그램이지만 가벼워서 아직도 많이 쓰인다. (1) Nginx 설치 먼저 A서버에 Nginx를 설치하자. sudo apt update sudo apt install nginx 다음으로..
Policy Gradient 개념과 대표적인 알고리즘인 REINFORCE 내용을 정리하고자 한다. 1. 개념 (1) Monte Carlo methods Monte Carlo methods are a group of methods that samples randomly from a distribution to eventually localize to some solution. In the context of RL, we use monte carlo methods to estimate the reward by averaging the rewards over many episodes of interaction with the environment. (출처) (2) Policy Gradient methods P..