whisper --language Korean --device cuda [file] 을 하면되는데 cpu가속이 되는경우가 있다.

확인 방법은

 

python3 -c "import torch; print(torch.cuda.is_available())"

False인 경우 버젼을 확인해본다.

python3 -c "import torch; print(torch.__version__)"

 

https://developer.nvidia.com/cuda-11-6-0-download-archive

 

CUDA Toolkit 11.6 Downloads

Get CUDA Toolkit 11.6 for Linux and Windows.

developer.nvidia.com

를 통해서 cuda를 설치해야되는데, 오늘기준으로 보면 cuda 11.6을 설치해야되는걸로 보인다.

 

https://pytorch.org/get-started/previous-versions/

 

Previous PyTorch Versions

Installing previous versions of PyTorch

pytorch.org

에서 확인해보면 

# CUDA 11.6
pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu116

라고 되어있으니 그대로 실행한뒤 (pip3을 사용했음) torch버젼을 확인해보면 제대로 설치되어있다.

kalstein@GAMEPC:~/aa_lecture/20241108$ python3 -c "import torch; print(torch.__version__)"
1.13.1+cu116

 

이후에 whisper를 실행해보면 월등히 빠른속도로 나온다.

gcc-arm-none-eabi 관련해서 permission이 없다는 에러

'/bin/sh: 1: arm-none-eabi-gcc: Permission denied'

 

-> 설치가 안되어있음.

sudo apt install gcc-arm-none-eabi

 

 

 

platforms/chibios/platform.mk:266: lib/chibios/os/hal/lib/streams/streams.mk: No such file or directory
gmake: *** No rule to make target 'lib/chibios/os/hal/lib/streams/streams.mk'.  Stop.

 

-> 이것도 qmk쪽의 chibios가 설치 안되어서 생기는 문제

qmk git-submodule

 

https://hiperzstudio.tistory.com/63

 

[Windows] 특정 port가 시스템에 예약되어 있어서 사용 불가능 한 경우 해결방법

서버 프로그램을 동작 시키기 위해 특정 TCP 포트를 열려고 할 때 이미 사용중인 포트라는 오류가 뜨면 일반적으로 netstat를 사용하거나 마소에서 제공하는 TCPView(https://learn.microsoft.com/en-us/sysintern

hiperzstudio.tistory.com

확인해본다.

 

사용하고 있는 프로세스가 없는경우,

netsh interface ipv4 show excludedportrange protocol=tcp

출처: https://hiperzstudio.tistory.com/63 [쭈니아빠 블로그:티스토리]

으로 확인해볼수 있고. 초기화는

 

net stop winnat
net start winnat

를 한다.

git reset --hard HEAD^ : --hard 를 해야 내가 가진 코드에서 수정된걸 revert 한다.

C / C++

  1. Click Window » Preferences
  2. Expand C/C++ » Code Style
  3. Click Formatter
  4. Click the New button to create a new profile, then OK to continue
  5. Click the Indentation tab
  6. Under General Settings, set Tab policy to: Spaces only
  7. Click OK ad nauseam to apply the changes.


windows에서 쓸때.


set http_proxy=168.219.61.252:8080
set https_proxy=168.219.61.252:8080

python -m pip install --trusted-host pypi.python.org [pkgname]


하면 진행가능.

find /path -name "*.log" | xargs grep pattern


파일내용을 검색하고 해당 파일명을 볼수있다.

object C 를 그동안 열씨미 해오신 개발자분들은 '아 또 뭐 새로해야되나'

하는 심정일지도. ^^;;


애플의 취지는 이렇지않을까 싶다.


현재 iOS랑 MacOS는 바이너리 호환이 되지않는다.

당연히 한쪽은 x86이고 한쪽은 ARM 이니까.

이걸 깨고 싶은것 같다...


스크립트 언어인 이상, 플랫폼이 지원만 하면 얼마든지 돌아간다.

소스가 공개되는 문제점은 뭐 애플이 알아서 해결할꺼고.

(1차 컴파일된 내용으로 패키징을 한다거나 뭐 그런식.

python도 돌려보면 스크립트를 1차 컴파일한 pyc 파일이 돌아간다)


맥북에어의 신형에 ARM을 올려보는 시험을 하니마니 라는 루머가 돌았었는데

아무리 ARM이 발전했다고 해도 하스웰의 위엄에 따르지는 못하나보다 ㅋㅋㅋ

성능이 안나오는게 앞으로도 ARM이 x86의 성능을 따라가기란 쉽지않다는걸

느꼈을테지. 

C/C++에서는 callback 함수 한번 작성하려면 상당히도 귀찮다.
대표적인 callback 함수 쓰는게 sort() 라고 볼수있다. (STL에서는 for_each도 있고)
(callback 함수라기보다는 임시함수라고 하자. 그게 더 맞는 표현이니...ㅋ)

간단히 표현하자면, 함수호출시 인자값으로 함수포인터를 넘겨주는건데...
이게 좀 code reading 상 불편한 점이 있다. 왜냐고?

func_A (int i)
{ .... }
func_B(callback_func func)
{
    func(10);
}
main_func()
{
    func_B(func_A);
}

보통 이런 구조가 되는거다.
그러면, main_func을 읽고있다가 func_B 를 호출하는걸 알았다.
근데 func_A는 또 뭐야? 뭘 어떻게 비교하는거지?

이런 불편함때문에 boost lambda라는것도 있다.
저런 함수들은 보통 사이즈가 작고 구문도 간단한 경우가 많다.
그래서 람다 함수로 작성하면 func_A 같은걸 따로 작성하지않을 수 있고
코드 리딩도 쉬워진다.

반면, 복잡한 함수라면? 조금 까다로워진다.
어려운 람다함수를 쓰느니 그냥 func_A를 쓰는게 더 나을수있다는것.
자 그러면 python에서는 어떨까. nested function 선언이 가능하다!

>>> def outer():
       x
= 1
       
def inner():
           
nonlocal x
           x
= 2
           
print("inner:", x)
       inner
()
       
print("outer:", x)


>>> outer()
inner
: 2
outer
: 2

특히나, "nonlocal" 키워드를 통해서, 일반 function과의 변수를 공유할수도 있다.
(공유하기 싫으면 "nonlocal x" 만 지워버리면 된다. 그럴경우 outer의 x와 inner의 x는 전혀 별개의 변수)
정말 python은...쓸수록 귀요미인듯 =_=;;;
난 C/C++ 를 더 오랫동안 잘 써왔다.
최근들어서 그래도 이리저리 뒤적거리는게 python.
C/C++에 비해 유지보수의 장점도 있고, 기본제공되는 라이브러리도 다양하고, 여튼 상당히 괜찮은 느낌이라서 사용중인데... closure라는게 있길래 좀 살펴봤다.

알아보니..음 뭐랄까. C++의 binding과 비슷했다. (boost 의 bind)
a,b를 인자로 가지는 func(a,b)이 있다손 치면, b라는 녀석을 고정시키고 func(a)를 만들어낸달까.

뭐 사실... 그닥 실용적인 예제는 모르겠다. -_-;;;;
굳이 꼽자면 Command 패턴에 사용하기 좋다는것. (bind를 활용해서도 잘 쓰니까...)
그정도...? 그래도 이런게 언어적으로 지원되는거랑 안되는거랑은 많이 차이난다.
쓸려고하는데 지원이 안되면 꼼수로 뱅뱅 돌아가야되거든...ㅎ

+ Recent posts