분류 전체보기 250

Docker attach와 exec의 차이

docker attach attach는 실행되고 있는 컨테이너에 접속하는 명령어이다. 사용법은 다음과 같다. docker attach 간단하게 말하자면, attach를 사용하게 되면 로컬 머신의 stdin, stdout, stderr 스트림들이 해당 컨테이너와 연결되게 된다. 즉, 표준 입출력을 연결시켜서 컨테이너 내부의 제어가 가능하도록 해주는 기능이라고 할 수 있다. attach로 컨테이너를 접속한다면 처음 도커 컨테이너를 run하였을 때의 환경이 포그라운드로 보여지게 된다. 따라서, 만약 도커 컨테이너를 run할 시 /bin/bash로 들어간 것이 아니라면 attach를 활용해서는 들어갈 수 없다. 참고로 container의 pid 1은 리눅스에 의해 특별하게 관리되고 있어서 기본 액션 시그널을 무..

Container/Docker 2023.10.09

Precision과 Recall

Precision과 Recall 자신이 어떤 기술을 개발하였다. 예를 들어 이미지에서 사람을 자동으로 찾아주는 영상 인식 기술이라고 하자. 이 때, 사람들에게 "이 기술의 검출율은 99.99%입니다"라고 말하면 사람들은 "오우...!!!" 하면서 감탄할 것이다. 반면에 "이 기술의 검출율은 50%입니다"라고 말하면 사람들은 별 관심을 보이지 않거나 "그것도 기술이라고..." 생각할 것이다. tl;dr - precision은 검출된 결과의 정확도를 나타낸다 - recall은 실제 물체를 얼마나 덜 빠뜨리고 검출하였는지에 대한 지표이다. 자신이 어떤 기술을 개발하였다. 예를 들어 이미지에서 사람을 자동으로 찾아주는 영상 인식 기술이라고 하자. 이 때, 사람들에게 "이 기술의 검출율은 99.99%입니다"라고 ..

AI/Machine Learning 2023.10.09

Knowledge Distillation

Knowledge Distillation = 지식(Knowledge) + 증류(Distillation) - 지식 : 어떤 대상에 대하여 배우거나 실천을 통하여 알게 된 명확한 인식이나 이해 - 증류 : 액체를 가열하여 생긴 기체를 냉각하여 다시 액체로 만드는 일. 여러 성분이 섞인 혼합 용액으로부터 끓는점의 차이를 이용하여 각 성분을 분리할 수 있다. 그렇다면 지식 증류란 무엇인가하면, 큰 모델(Teacher Network)로부터 증류한 지식을 작은 모델(Student Network)로 transfer하는 일련의 과정이라고 할 수 있다. Knowledge Distillation은 도대체 왜 등장했을까? 지식 증류를 처음으로 소개한 논문은 모델 배포(model deployment) 측면에서 지식 증류의 필..

AI/Machine Learning 2023.10.09

PyTorch에서 이미지 데이터에 대해 normalize를 할 때, mean=[0.485, 0.456, 0.406]과 std=[0.229, 0.224, 0.225]를 쓰는 이유는?

PyTorch vision 모델 페이지에 가보면, "All pre-trained models expect input images normalized in the same way, i.e. mini-batches of 3-channel RGB images of shape (3 x H x W), where H and W are expected to be at least 224" 라는 내용을 볼 수 있다. 그 다음에 아래와 같은 코드를 볼 수 있을 것이다. normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) 보다시피, mean과 std 값으로 뭔가 이상한 값들이 세팅되어 있다. 많은 사용자들이 이 값들을 ..

AI/PyTorch 2023.10.09

[논문리뷰] GLaM: Efficient Scaling of Language Models with Mixture of Experts

1. 주요 쟁점 1 - 1. 환경 문제 최근, 딥러닝 연구가 과한 전기를 사용하고, 이것이 지구온난화를 악화시키고 있다는 연구들이 많이 나오고 있다. 이 논문은 그러한 사회 분위기를 이해하고 거대 모델을 학습시킴에 있어서 더 적은 계산량만으로 충분히 좋은 성능을 내게 만드는데 초점을 맞추었다 1 - 2. data의 중요도 이 논문은 Introduction에서 "거대 모델이라 할지라도 좋은 퀄리티의 자언어 이해 모델을 만들고자 한다면 좋지 않은 데이터를 추가해서라도 대량의 데이터를 모으기보다는 이에 타협하지 않고 양질의 데이터만을 학습에 사용하는데에 집중을 해야 한다" 고 밝혔다. GPT-3 등의 거대 모델들이 초대량의 언어 데이터셋으로 학습하는 과정에서 온라인 상의 다양한 데이터들을 스크랩해서 사용했고 ..

AI/논문 리뷰 2023.10.09

esp32-s3 보드 아두이노 IDE에서 테스트하기

설명에 앞서, 여기서 사용된 환경은 MacOS Monterey로, 다른 운영체제에서는 약간 해결법이 다를 수 있다. 우선, 아두이노 IDE에서 esp32-s3 보드를 사용하기 위해서는 최신 버전 esp32 보드 매니저가 있어야 한다. Preferences 탭을 연 뒤, Additional board manager's URL에다가 다음 url을 추가해야 한다. https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json 추가로, 컴파일 및 업로드 시에 자세한 정보를 얻기 위해 compile과 upload에 둘 다 가능하면 체크를 하는 것이 좋다. 보드 매니저 추가 후, 보드 설치 안내가 나오면 i..

IoT 2022.11.02

우분투 18.04 LTS에서 Node.js version 10과 pm2 설치하기

우분투 18.04 버전에서는 apt가 node.js version 10에 대해서 기본적으로 지원을 하지 않아서 sudo apt install nodejs로 node.js를 설치하면 8버전이 설치가 된다. 그런데, pm2의 설치를 위해서는 node.js가 version 10 이상이어야만 한다. 우분투 18에서 20으로 업그레이드 없이 이를 해결하는 가장 빠른 방법은 curl을 사용해서 Node 10 installer를 다운 받고 실행시키는 것이다. # curl 설치 sudo apt install curl # Node 10 installer 다운 및 설치 curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash - # installer를 설치하게 되면 해..

JavaScript/Node.js 2022.10.01

flask - "ImportError: cannot import name ‘parse_rule’ from ‘werkzeug.routing’" 해결법

기본적으로 해당 에러는 flask 내의 wekzeug의 버전 및 호환성과 관련된 이슈이다. 해당 문제의 가장 빠른 해결 방법은 flask와 werkzeug의 버전을 바꾸는 것이다. pip3 install werkzeug==2.1.2 pip3 install flask==2.1.3 위와 같이 werkzeug와 flask를 2.2.2가 아닌 2.1.x 버전으로 다시 설치를 하게 되면 정상적으로 작동하게 된다. 관련 링크: https://jtuto.com/importerror-cannot-import-name-parse_rule-from-werkzeug-routing/ [SOLVED] ImportError: cannot import name 'parse_rule' from 'werkzeug.routing' - ..

Python 2022.10.01

java.lang.ClassNotFoundException: Didn't find class "java.time.Duration" on path: DexPathList 해결법

Java version: Java8 안드로이드 앱을 개발하면서 dnsjava나 GoogleCredentials 등을 사용하다 보면 아래와 같은 에러를 만날 수 있다. java.lang.ClassNotFoundException: Didn't find class "java.time.Duration" on path: DexPathList 해당 에러의 주요 원인은 앱이 실행되는 환경에 있는 JVM 환경에 java.time이 없기 때문에 발생하는 문제이다. Stackoverflow에 따르면 java.time 관련 기능이 Android API 26에 추가가 되었기 때문에 이보다 아래 버전의 API 환경에서는 위와 같은 에러가 발생한다고 한다. https://stackoverflow.com/questions/6284..

Android 2022.09.20

MacOS에서 Homebrew로 Java 설치하기

M1 등장 이후 맥북 시스템 생태계는 Intel 기반 시스템과 Apple Silicon (M1, M2, etc) 기반 시스템으로 나뉘게 되었다. 즉, 이제는 패키지 배포 시에도 M1용과 Intel용을 각각 구분해서 올려야 하고, 설치를 할 때에도 잘 구분을 하여야만 하게 되었다. 기존에 안그래도 복잡한 자바의 설치가 Oracle의 저작권 관련 소송과 M1 등장 이후 더욱 복잡해졌다. 특히 2015년 맥북 프로와 같이 예전 모델을 쓰는 사용자들에게는 더욱 상황이 안 좋아졌다. 이러한 사용자들을 위해 macOS 기반 패키지 관리자인 Homebrew의 사용은 맥북을 사용하는 개발자들에게는 필수가 되어 버렸다. 기존에도 필수였던 홈브루의 사용 필요성이 더욱 올라가게 된 것이다. 홈브루로 자바를 설치하는 방법은 ..

Java 2022.09.15