전체 글 96

Segment tree : Lazy Propagation (range MAX update)

문제입력 : nums, updates, queries nums.size nums[i]>0updates.size queries.size  ex)nums : [1,2,3,4,5,6,7,8,9,10]updates : [[1,3,6],[2,2,1],[1,8,2],[7,8,8],[1,4,9]]queries : [[1,3],[2,4],[5,8],[2,5],[7,9],[2,6]] updates는 [i,j,value] 쌍으로 되어있으며 nums[i:j+1]까지의 값을 value로 업데이트 한다queries는 [i,j]쌍으로 되었다updates로 업데이트가 일어날때마다 queires에 있는 모든 element들의 max(nums[i:j+1])을 구해야한다  Segment Tree일반적인 segment tree를 쓰면 시..

알고리즘 2024.06.06

Apache web server request body 로깅

개발에서 나오지 않던 결함이 운영에서 나오고 있어 로깅을 해봐야했습니다spring에서 로그 레밸을 info > debug로 바꾸자니 로그 크기가 너무 커지기도 하고,회사 배포 절차가 까다로워 debug > info 로 다시 원복을 하는 배포까지 하루단위로 2번 배포하는것이 불가능했습니다아파치 웹서버 설정변경으로 requestbody를 로그를 임시로 찍어보기로 했습니다 회사에서 했던 설정 그대로 집에서 해보려고 아파치 서버를 다운받는데 생각보다 해야할게 많아서 따로 올렸습니다https://jjjjqqq.tistory.com/69  http.conf에서 dumpio 사용 주석 풀어줍니다LoadModule dumpio_module modules/mod_dumpio.so https://httpd.apache.o..

개발업무/개발 2024.05.30

Apache Server 설치

홈페이지에서 최신 버전을 확인해서 다운받자https://httpd.apache.org/download.cgi 다른 블로그 글들은 필요한 패키지를 모두 다운받아서 시작하는데, 저는 그냥 아파치 웹서버 다운받다가 에러 메시지 표출 될때마다 필요한 패키지를 다운받았습니다. ** 저는 파일경로 유저 내 파일 경로로 했는데 유저로 하면 나중에 설정 추가로 해야하니 /home 경로는 쓰지마세요cd /home/jun/server/httpdwget https://dlcdn.apache.org/httpd/httpd-2.4.59.tar.gztar -zxvf httpd-2.4.59.tar.gzcd httpd-2.4.59./configure --prefix=/home/jun/server/httpd하다보면 없는 패키지가 뜬다...

개발업무/개발 2024.05.29

TVM - autoTVM

https://arxiv.org/pdf/1805.08166 이전 글에서 TE를 통해 최적화하는 방법을 올렸습니다하지만, 어떤 조합(transform, hyperparameter)을 통해 최적화를 하는 것이 가장 좋은 방법인지는 여전히 알 수 없습니다autoTVM은 machine learning을 통해 어떠한 조합이 가장 성능이 뛰어난지 알려줍니다 참고로 autoTVM은 template-based입니다즉, 사용자가 search space를 파이썬 소스를 통해 정의하고, 정의된 search-space 안에서 최적의 code를 찾습니다.완전히 automated된 방법을 쓰려면 다음에 나온 autoScheduler를 써야합니다(https://arxiv.org/pdf/2006.06762) 논문으로 히스토리를 찾았..

인공지능/TVM 2024.05.20

TVM - Tensor Expression Optimization

최적화를 할 때 relay를 TE로 가져와 TE를 직접 다루지는 않는 것 같습니다.TE에서 어떠한 방식으로 최적화가 이루어지는지 살펴봅시다 https://tvm.apache.org/docs/how_to/optimize_operators/opt_gemm.html#sphx-glr-how-to-optimize-operators-opt-gemm-py How To Guides > Optimize Tensor Operators > How to optimize GEMM on CPU Edit on GitHub Note This tutorial can be used interactively with Google Colab! You can also click here to run the Jupyter notebook lo..

인공지능/TVM 2024.05.15

TVM introduction

TVM은 인공지능 모델(TF, torch, onnx)을 하드웨어(CPU, GPU, FPGA)에 최적화된 코드로 변환한다.TVM은 추론과정에서만 쓰인다. 학습과정에서는 딥러닝 프레임워크 자체에 있는 최적화 방법을 쓴다 TVM이 최적화하는 과정은, 요약하자면 Lowering(더 낮은 레밸의 언어로 변환)과 optimization을 반복수행하는 것이다.  1. 딥러닝 프레임워크(TF/torch/onnx)로부터 모델을 불러온다 2. Relay 라는 언어로 변경한다. (IR = intermediate representation)인공지능 모델은 Computational Graph (computation을 표현하는 Directed Acyclic Graph)로 나타낼 수 있다.Relay는 Computational Gr..

인공지능/TVM 2024.05.06

Word2Vec

word2vec은 단어를 숫자로 변환하는 방법 중 하나입니다. word2vec 이전에 썼던 방법은 one-hot encoding이 있습니다One-hot encoding다음과 같은 문장을 봅시다 Laughter echoed through the hall as the children played.각 단어 당 차원 1개를 할당하여 매핑합니다 012345678Laughter1        echoed  1       through   1      the    1     hall     1    as     1   the       1  children        1 played        1예를들어 echoed를 vector로 나타내면 [0,1,0,0,0,0,0,0] 입니다 다음과 같은 단점이 있습니다1. ..

인공지능 2024.05.01

Vessl GPU 서버 사용

처음 로그인 한 후 Workspaces > +New workspace GPU 서버 알아서 설정하고 Deploy  Status가 running으로 변경될때까지 시간이 걸린다 그동안 vessl을 깔자 (ssh key 만들 수 있게 도와줌)pip install vesslvessl configure  그 다음 QUICKTOOLS > ssh 따라하면 된다 따라했으면,C:\Users\[사용자]\.ssh 수정한다Host vessl-server HostName XXX.XXX.XX.XX User root Port XXXX IdentityFile ~/.ssh/id_ed25519(Connect with VSCode로 하면 자동으로 환경설정이 추가되는것같은데 저는 실행이 안됩니다) vscode에서 Rem..

인공지능 2024.04.26

패턴매칭 - KMP(Knuth–Morris–Pratt algorithm) 알고리즘

KMP 알고리즘은 텍스트에서 패턴이 몇번째에 있는지 찾는 알고리즘입니다 시간복잡도는 O(N+M) 입니다. (N은 텍스트의 길이, M은 패턴의 길이) Naive algorithm 다음과 같은 순서로 text가 i부터 시작했을 때 pattern과 문자가 일치하는지 찾습니다 1. text[0:4] == pattern 2. text[1:5] == pattern ... def solution(text, pattern): answer = [] for i in range(len(text)): for j in range(len(pattern)): if i+j>=len(text) or text[i+j]!=pattern[j]: break if j==len(pattern)-1: answer.append(i) return a..

알고리즘 2024.04.16