아이패드 미니5를 잘쓰고 있는도중 짭슬펜슬이 충전이 안되는 상태가 되면서 부터 미니6에 관심이 가기 시작했다. 펜슬을 잘 안쓰는데 왠지 애플펜슬이 가지고 싶고 미니5에서 영상을 볼때 레터박스가 커보이고 왠지 미니6로 바꾸면 뭔가 더 좋을것같은 그냥 지름병이 생겼다. 그렇게 지름병을 잘 참고있었는데 어그날 우울한 일이 있었다. 그날따라 내가 이렇게 참으면서 살면 뭐하나 싶은 생각이 드는 찰나 쿠팡에 접속해 보니 스타라이트 미니6가 할인을 하고있었다. 애플펜슬2세대도 할인을 하고있었다. 그래서 최저가는 아니지만 그냥 샀다.
제품을 개봉할때 느낌은 정말 좋은것 같다. 새거를 뜯는 기분이 아주 좋다.
애플펜슬은 확실히 짭슬펜슬이랑 비교가 안될정도로 좋은것 같다. 물론 가격도 비교가 안될정도로 비싸다.
스타라이트 색상이 핸드폰처럼 완전 흰색이 아니라서 조금 실망했다. 왜 아이폰13하고 색상이 똑같다고 생각했는지 모르겠다 여러번 보긴했는데 생각보다 골드 느낌이 강하다. 많이 사용해 보지는 않았지만 애플펜슬은 짭슬펜슬보다 확실히 좋은것 같다. 미니6도 미니5보다 화면이 커져서 좋았다. 성능은 좋아지긴 했지만 미니로 하는게 별거 없어서 체감은 되지 않는다. 미니6에 젤리스크롤 이슈가 있어서 걱정했는데 나는 전혀 모르겠다. 민감한 사람은 느낄지도 모르겠다. 우울한 마음에 갑자기 지출을 하게되었지만 기분은 좋다. 이 좋은기분이 이어지도록 잘 샀다는 생각이 들었으면 좋겠다.
데이터 학습시 GPU에서 잘동작하는지 확인하는 방법으로 GPU의 상태를 확인한다 터미널에 다음과 같이 입력하면 상태를 확인할 수 있다
$ nvidia-smi
아래와 같은 테이블이 표시된다
Driver Version Driver Version: 510.47.03 현재 설치되어 있는 GPU Driver Version
CUDA Version CUDA Version: 11.4 현재 설치되어 있는 CUDA Version CUDA는 2개의 API를 가지고 있는데, 하나는 runtime API이고 다른 하나는 driver API 라고 한다 알고있는 Version과 다르다면 runtime API와 driverAPI를 별도로 설치한것이다
GPU Fan GPU Fan048% GPU의 번호와 GPU의 fan 사용량을 %로 표시
Name NVIDIA RTX A6000 GPU의 model명 표시
Temp 39C 현재 설치되어있는 GPU의 현재 온도를 섭씨로 표시 온도가 너무 높으면 성능 저하 및 GPU Drop이 발생할 수 있다
Perf P8 Performance mode표시 P0 ~ P12까지 존재하며 숫자가 작아질수록 GPU의performance가 좋은 상태
Persistence-M On: 파워 지속성 모드 on/off 표시 기본적으로 default mode는 off이며 on상태시 power limit을 설정할 수 있다 power를 얼마나 지속할지 정해줄 수가 있다 GPU 사용시에 지연 시간을 아끼는 장점이 존재하지만, 전력을 더 낭비 한다
Pwr:Usage/Cap 23W /300W GPU의 현재 전력의 사용량과 최대 용량을 표시
Bus-ID 00000000:08:00.0 메인보드 마다 가지고 있는 PCI slot에 부여된 Bus-ID 이를 통해서 사용하는 GPU 번호와 메인보드의 PCI slot을 매칭시킬 수 있다
Disp.A off Display를 출력하는지 표시 모니터에 연결된 GPU는 on으로 변경된다
Memory-Usage 15MiB/49140MiB GPU의 memory와 GPU의 총 memory를 표시
GPU-Util 0% GPU의 현재 사용량 표시 100%의 성능 중 얼마만큼 사용하고 있는지를 나타내고 있다
Volatile Uncorr.ECC off ECC모드 on/off 표시 기본적으로 default mode는 on이며 Error count가 증가한다 count가 증가하면 system hang이 발생한다 그래서 off로 설정하고 작업하는 곳이 많다 그리고 off로 설정하게 되면 신기하게도 GPU memory 총량이 늘어난다고 한다
Compute M. off Compute-Mode를 표시
0 - Default
1 - exclusive thread
2 - prohibited
3 - exclusive process mode
MIG M. N/A MIG 표시 NVIDIA GPU를 slice하는 기능으로, MIG M은 MIG-Mode의 약자이고 MIG는 Multi-Instance GPU의 약자이다. CUDA application을 실행시 최대 7개의 개별 GPU instance로 안전하게 분할하여 여러 사용자에게 별도의 GPU를 제공하여 작업을 가속화하는데 도움을 준다 여러개의 instance를 지원하는 MIG는 오로지 NVIDIA A100 이상 델에서만 지원이되고 이외에도 필요조건이 존재한다
Processes 현재 GPU가 잡업하고 있는 Process를 표시 작업을 하게되면 Process가 늘어난다
nvidia-smi Live Check
GPU를 이용해서 작업을 하다보면 GPU를 잘사용하는지 계속해서 확인이 필요할때가 있다 이럴때는 watch 명령을 이용해서 갱신되는 정보를 확인하면 된다 -n 1 은 시간간격을 의미하며 1은 1초마다 갱신하면서 보겠다는 뜻이다
$ watch -n 1 nvidia-smi
ctrl + c를 누르면 원래 화면으로 돌아간다
-d 옵션을 주고 변경되는 부분을 하이라이트 시킬수 있다
$ watch -d -n 1 nvidia-smi
nividia-smi Option
-q--query Display GPU or Unit info
$ nvidia-smi -q
GPU의 거의 모든 정보를 보여준다 필요에 따라서 grep 명령어를 통해 필요한 정보만 볼수도 있고 별도의 옵션을 통해 필요정보를 따로 확인할 수 있다
-d, --display Display only selected information MEMORY, ECC 등..
$ nvidia-smi -q -d memory
$ nvidia-smi -q -d ecc
memory 조회
ecc 조회
-q 옵션에서 나온 GPU정보에서 필요한 정보만 표시한다
-i, --id Target a specific GPU
$ nvidia-smi -q -d memory -i 0,1
-i 옵션을 사용하면 필요한 GPU만 선태하여 간략하게 볼 수 있다 다수의 GPU를 사용한다면 유용하지만 현재는 GPU가 하나이기때문에 -i 옵션을 안넣은것과 결과가 같다
-L, --list-gpus Display a list of GPUs connected to the system
사이트마다 다르기는 하겠지만 보통 ID, PW를 입력받고 로그인 절차를 진행하게 될것이다 요새는 SCRF정보를 로그인정보에 포함하거나 로그인 URL에 정보를 포함하여 보안 검사를 하는것 같다 지금 테스트 하는 사이트는 from태그에 action 속성을 써서 로그인 요청을 할때마다 URL이 변경된다
ID와 PW를 입력할 속성을 확인하였으니 로그인 정보에 해당하는 ID를 넣어서 로그인한 세션을 반환하는 펑션을 만든다
import requests
from bs4 import BeautifulSoup as bs
LOGIN_INFO = {
'login': 'test_user', # ID입력 속성 ID, <<login_id>>
'password': '1234' # PW입력 속성 ID, <<login_pw>>
}
def get_login_session(url):
s = requests.Session()
# html소스 가져오기
first_page = s.get(url, verify=False)
html = first_page.text
soup = bs(html, 'html.parser')
# from 태그 중에서 method가 post인 것을 찾음.
form_tag = soup.find('form', {'method': 'post'})
if(form_tag is not None):
print(form_tag['action'])
login_url = default_url + form_tag['action']
login_result = s.post(login_url, data=LOGIN_INFO, verify=False)
return s
다운로드 url에 접속하면 로그인페이지가 나온다 first_page에는 따라서 로그인 페이지의 html이 들어있다 BeautifulSoup을 이용하여 원하는 태그를 가져오고 속성 action값을 확인한다 테스트 사이트는 기본 url뒤에 action속성값을 추가하여 url을 생성하여서 기본url뒤에 action속성값을 더해서 login_url을 만든다 login_url에 LOGIN_INFO를 정보를 담아서 post 메소드를 실행한다 verify 옵션은 ssl인증서 확인 비활성화 옵션이다 login_result의 login_result.status_code의 값이 200이면 로그인 성공이고 400, 404등의 코드이면 로그인 실패이다 코드에 따라 문제를 확인하여 해결하면 된다
저장하는 코드를 추가하여 다운로드 하여보자
import requests
from bs4 import BeautifulSoup as bs
download_url = 'https://localhost:8000/files/test.txt?827cc19%7Cb09b72a6db1b79586b7d3e6e5bb4ac5d%7C1652694385'
default_url = 'https://localhost:8000/
LOGIN_INFO = {
'login': 'test_user', # ID입력 속성 ID, <<login_id>>
'password': '1234' # PW입력 속성 ID, <<login_pw>>
}
def get_login_session(url):
s = requests.Session()
# html소스 가져오기
first_page = s.get(url, verify=False)
html = first_page.text
soup = bs(html, 'html.parser')
# from 태그 중에서 method가 post인 것을 찾음.
form_tag = soup.find('form', {'method': 'post'})
if(form_tag is not None):
print(form_tag['action'])
login_url = default_url + form_tag['action']
login_result = s.post(login_url, data=LOGIN_INFO, verify=False)
return s
session = get_login_session(download_url)
file = session.get(download_url)
open('D:\\test.txt', 'wb').write(file.content)