본문 바로가기

Engineering45

[Torchserve] torchserve explanations API 사용하기 [torchserve에서 기본으로 제공하는 API] torchserve는 기본적으로 아래 3가지 Service API를 제공하고 있습니다. - Inference API - Management API - Metrics API 그리고 각각의 API는 다른 포트와 path 로 구분을 하여 request 합니다. 각 API 별 curl 예시는 아래와 같습니다. API curl example PORT path inference http://127.0.0.1:8080/predictions/resnet-18/2.0 -T kitten_small.jpg 8080 predictions management http://127.0.0.1:8081/models/noop 8181 models metrics http://127.0.. 2022. 9. 1.
[Torchserve] torchserve Backend worker did not respond in given time [Error message] - Backend response time : 120000 - Backend worker did not respond in given time torchserve에서 API를 request 했을 때 handle 함수를 실행하는데, 이때 handle 함수를 실행해서 return 하는 시간은 기본적으로 120초(2분)으로 설정되어있다. (default config 값: default_response_timeout=120) 일반적인 추론의 기능에서는 문제가 없지만, 재색인을 한다는 등의 running time이 요구되는 기능을 추가했을 경우 이 timeout 시간에 걸려서 중간에 멈출수 있으니, config에서 parameter 값을 수정해야한다. config.properties에.. 2022. 8. 31.
[Torchserve] torchserve error - java.io.IOException: Failed to bind ② torchserve error - java.io.IOException: Failed to bind 이전 글에서 에러를 해결하기위해 PORT 번호를 바꾸는 방법을 찾았다. 2022.08.29 - [Error] - [torchserve] torchserve error - java.io.IOException: Failed to bind ① [torchserve] torchserve error - java.io.IOException: Failed to bind ① torchserve --stop으로 중단시킨 후 --start 로 재시작하였으나, 주소가 이미 사용 중이라는 에러가 발생함 netstat 으로 8080 포트를 확인했지만, kill 할 수있는 PID가 보이지않음! # 문제점1. torchserve가.... 2022. 8. 31.
[Torchserve] torchserve API PORT change torchserve에는 custom API 개발을 위해 기본적으로 설정되어있는 PORT가 있지만, 사정상 해당 포트(8080, 8081)를 쓸 수 없는 경우 매핑된 PORT를 변경하는 방법을 공유하고자 한다. torchserve는 기본적으로 inference API는 8080, model관련된 API(management) 8081 포트를 쓰도록 디폴트 설정이 되어있다 아래는 따로 설정하지 않아도 자동으로 생성되는 config파일 (config.properties)이다. inference_address=http://0.0.0.0:8080 management_address=http://0.0.0.0:8081 하지만, 같은 서버에서 8080, 8081 포트를 사용할수 없는 경우가 생기는데, 이때 PORT를 변.. 2022. 8. 30.
[Torchserve] torchserve error - java.io.IOException: Failed to bind ① torchserve --stop으로 중단시킨 후 --start 로 재시작하였으나, 주소가 이미 사용 중이라는 에러가 발생함 netstat 으로 8080 포트를 확인했지만, kill 할 수있는 PID가 보이지않음! # 문제점1. torchserve가 중단되어 있는데 curl /ping, /models는 response가 온다. # 문제점2. netstat | grep에서 PID가 배정되지 않음을 확인하였지만, torchserve --start로 실행시, 이미 주소를 쓰고 있다는 에러가 뜬다. -> root에서 확인하는 명령어 sudo ss -lntu netstat -ntlp | grep :9090 현재 9090 포트를 쓰고있는 프로세스 번호를 확인하고 kill torchserve를 쓰지 않고 java를 연.. 2022. 8. 29.
[리눅스 명령어][파일 처리] 파일 복사(cp) cp : 현재 디렉터리에 있는 파일을 원하는 디렉터리에 복사 붙여넣기 하기 1. 파일 복사 붙여넣기 -> cp [복사할 파일] [붙여넣기할 디렉터리] $ cp file1 dir1 2. 파일 여러개 복사 붙여넣기 -> cp [복사할 파일1] [복사할 파일2] .. [붙여넣기할 디렉터리] $ cp file1 file2 file3 .... dir1 3. cp [옵션] -i 같은 이름의 파일 있으면 덮어쓰기 여부 확인 -f (i와 반대) 같은 이름 파일있어도, 확인 없이 모두 덮어쓰기 -r 디렉터리째 복사 -d 심볼릭 링크와 하드 링크를 그대로 링크로 복사 -p 날짜, 플래그 같은 파일정보를 가능한 그대로 복사 -v 복사 원본 파일과 복사 대상 파일 이름 표시 -a 복사 원본파일 구성과 속상을 유지하여 복사 -.. 2021. 8. 15.
[리눅스 명령어][파일 처리] 파일 내용 표시(cat) cat 1. 파일 내용 표시 = cat [파일명] : [파일명] 을 조회하여 내용을 표시 $ cat file1 2. 여러 파일 내용 표시 = cat [파일명1] [파일명2] [파일명3] : 파일명 1,2,3을 한꺼번에 표시 $ cat file1 file2 3. 조회한 내용 다른 파일로 저장 = cat [파일명1] [파일명2] > [파일명3] : 조회한 파일의 내용을 한꺼번에 [파일3]으로 저장하기 $ cat file1 file2 > file3 4. cat [옵션] [파일명1][파일명2]... -n 표시할 내용에 줄 번호 추가 -b -n 과 같이 줄번호를 추가하되, 빈줄은 계산하지 않음 -A 모든 제어 문자를 표시 2021. 8. 15.
[리눅스 명령어][파일 처리] 디렉터리 생성(mkdir) mkdir 1. mkdir [파일명] : 현재 파일(디렉터리)에 새로운 파일(디렉터리) 생성하기 $ mkdir dir 2. mkdir [파일명1] [파일명2] [파일명3] : 현재 파일(디렉터리)에 새로운 파일1,2,3(디렉터리) 한꺼번에 생성하기 $ mkdir dir1 dir2 dir3 3. mkdir [옵션] -m mode mode로 지정한 권한으로 디렉터리 생성 -p 지정한 디렉터리 경로가 존재하지 않을 시, 중간 경로도 모두 포함하여 해당 디렉터리를 새롭게 생성 $ mkdir -p dir1/dir2 2021. 8. 15.
[리눅스 명령어][파일 처리] 디렉터리 조회(ls) ls의 여러가지 옵션들 > ls [옵션][디렉터리[파일]...] [옵션] 설명 -a 일반 파일(디렉토리) 외에 *닷 파일(dotfile)도 표시 (기본 'ls' 명령어에선느 닷파일을 표시하지 않음) -d 디렉터리를 인수로 지정했을 때 디렉터리 내부를 표시하는 것이 아니라 다른 파일과 마찬가지로 디렉터리명을 표시 -F 분류기호를 추가하여 표시 ① / : 디렉터리 ② @ : 심볼릭 링크 ③ * : 실행 가능한 파일 -l 최종 업데이트 일자, 파일 소유자, 권한 등을 표시 -t 파일을 알파벳 순서가 아니라 최근에 갱신한 순서대로 표시 -R 서브 디렉터리 안에 있는 파일도 모두 표시 -h -l 옵션과 함께 지정하면, 파일크기를 읽기 쉬운 단위로 표시 (K-킬로, M-메가, G-기가) -1 한줄에 하나씩 표시 -.. 2021. 8. 14.
[알고리즘] 다이나믹 프로그래밍(Dynamic Programming) 오늘은 다이나믹 프로그래밍(Dynamic Programming)에 대해서 알아보도록 하겠습니다. 이름이 너무 무섭게 생겼기 때문에, 마음의 준비를 하고 알고리즘 공부를 시작했는데요, 기초 이론은 생각보다 빡세지 않았고, '이게 다인가?' 하는 물음에 대해서 나무위키에서 시원하게 답이 나와있어서 좋았습니다 :) 1. 다이나믹 프로그래밍(Dynamic Programming)이란? : 다이나믹 프로그래밍 알고리즘은 응용 수학자 리차드 벨만(Richard Bellman)이 1953년에 고안한 알고리즘으로, 리차드 벨만은 그전에 최단 거리를 구할때 사용하는 벨만-포드(Bellman-Ford)알고리즘을 고안하고, 머신러닝 분야의 '차원의 저주(Curse of Dimensionality)라는 이론을 만든 저명한 수학.. 2021. 7. 25.
[알고리즘][트리] 이진트리(Tree Diagram) - Python 1. 트리 구조 1.1 트리의 정의 - 트리는 계층형 트리 구조를 시물레이션하는 추상형 자료형(ADT)으로, 루트 값과 부모-자식 관계의 서브트리로 구성되며, 서로 연결된 노드의 집합입니다. - 트리의 중요한 속성은 '재귀로 정의된(Recursively Defined) 자기 참조(Self Refrential) 자료구조' 라는 점입니다. 풀어 설명하자면, 트리의 자식도 트리이고 그 자식의 자식도 트리입니다. 즉, 트리는 여러개의 서브트리로 구성되어있습니다. - 보통 데이터베이스는 내부적으로 대용량 데이터 처리에 적합하도록 트리 자료구조를 이용하여 항상 데이터가 정렬되어 있습니다. 탐색에 빠르고 용이한 트리구조로 되어있어서, 데이터가 많아도 탐색 속도가 빠릅니다. 1.1 트리의 특징 - "트리는 순환 구조(.. 2021. 7. 17.
[알고리즘][검색] 이진 탐색(Binary Search) - Python 1. 이진 탐색(Binary Search) 이란? - [나무위키] 이진 탐색(Binary Search)는 오름차순으로 정렬된 리스트를 같은 크기의 두 부분 리스트로 나누고 필요한 부분에서만 탐색하도록 제한하여 원하는 원소를 찾는 알고리즘입니다. 리스트의 중간 부분에 찾는 원소가 있는지 확인하고, 없으면 위쪽에 있는지 아래쪽에 있는지 판단하여 맨 앞부터 검색하거나 중간부터 검색합니다. - 대학생때 많이들 하는 '업다운' 게임과 같은 방식입니다! 2. 이진 탐색의 파이썬 코드 2.1 재귀함수로 구현한 이진 탐색 def binary_search(array, target, start, end): if start > end: return None mid = (start + end) // 2 if array[mid.. 2021. 7. 16.
[알고리즘][정렬] ③ 퀵 정렬 (Quick Sort) - Python 2021.07.10 - [알고리즘(Algorithm)] - [알고리즘][정렬] ① 선택 정렬 (Selection Sort) - Python [알고리즘][정렬] ① 선택 정렬 (Selection Sort) - Python 이 글은 '이것이 코딩테스트다(나동빈 저)'를 공부하면서 정리한 글입니다. 1. 정렬(Sorting)이란? - 정렬은 '특정한 기준에 따라서 데이터를 순서대로 나열하는 것'을 말합니다. 흔히 우리가 알고있 hyen4110.tistory.com 2021.07.10 - [알고리즘(Algorithm)] - [알고리즘][정렬] ② 삽입 정렬 (Insertion Sort) - Python [알고리즘][정렬] ② 삽입 정렬 (Insertion Sort) - Python hyen4110.tistory.. 2021. 7. 11.
[알고리즘][정렬] ② 삽입 정렬 (Insertion Sort) - Python 2021.07.10 - [알고리즘(Algorithm)] - [알고리즘][정렬] ① 선택 정렬 (Selection Sort) - Python [알고리즘][정렬] ① 선택 정렬 (Selection Sort) - Python 이 글은 '이것이 코딩테스트다(나동빈 저)'를 공부하면서 정리한 글입니다. 1. 정렬(Sorting)이란? - 정렬은 '특정한 기준에 따라서 데이터를 순서대로 나열하는 것'을 말합니다. 흔히 우리가 알고있 hyen4110.tistory.com 이전 글에서는 선택정렬(Selection Sort)에 대해서 알아보았습니다. 선택정렬은 가장 원시적인 방법으로 복잡도가 O(N²)에 해당하여 데이터가 늘어날수록 느려지는 단점이 있었습니다. 이번 글에서는 선택정렬처럼 직관적으로 이해하기 쉬우면서 좀 .. 2021. 7. 10.
[알고리즘][정렬] ① 선택 정렬 (Selection Sort) - Python 이 글은 '이것이 코딩테스트다(나동빈 저)'를 공부하면서 정리한 글입니다. 1. 정렬(Sorting)이란? - 정렬은 '특정한 기준에 따라서 데이터를 순서대로 나열하는 것'을 말합니다. 흔히 우리가 알고있는 '오름차순', '내림차순'이 이에 해당됩니다. - 정렬 알고리즘은 단순히 데이터를 정렬하는 것을 넘어 '이진탐색(Binary Search)'를 가능하게 하는 일명 전처리 단계와 같습니다. - 정렬 알고리즘에는 많은 종류가 존재하지만, 코딩테스트에 많이 사용되는 대표 4인방(선택 정렬, 삽입 정렬, 퀵 정렬, 계수정렬)만 다루도록 하겠습니다. 2. 선택 정렬(Selection Sort) 2.1 선택 정렬의 원리 - 선택 정렬(Selection Sort)에서는, 데이터가 무작위로 있을 때에 가장 작은 데.. 2021. 7. 10.