[공부] NVIDIA Omniverse, Isaac Sym
·
연구 Research
최근에 NVIDIA에서 Physical AI를 강조를 많이 하고 TED에서도 이와 비슷한 얘기가 나왔다. https://youtu.be/QOCZYRXL0AQ?si=OstjrO-6AKRJXoXm  그래픽 기술의 발달, GPU의 발전, 인공지능의 발전이 향하는 곳은 digital twin, robotics, simulation이다. 시뮬레이션은 각 분야마다 약간씩 다른 의미를 갖는다.기계공학과 고체, 열유체 분야에서 말하는 시뮬레이션은 발전된 수치해석 기법을 이용한 computational simulation을 말하고 이를 위해 정량화된 물성치를 얻는다.동역학, 제어 분야에서 말하는 시뮬레이션은 dynamics를 해석적, 수치적 기법을 통해서 시간에 대한 궤적을 구해서 이를 분석한다. 화학 분야에서 연구하는..
[최적화] Gradient를 계산하는 방법
·
연구 Research/최적화 Optimization
최적화 방법을 보면 gradient 정보를 사용하는 경우가 많다. 실제 최적화 알고리즘을 구현하고자 할 때 의문인 것이 바로 이 gradient를 어떻게 구하냐는 질문이다. 대표적최적화 방법을 보면 gradient 정보를 사용하는 경우가 많다. 실제 최적화 알고리즘을 구현하고자 할 때 의문인 것이 바로 이 gradient를 어떻게 구하냐는 질문이다.  그 방법으로는0. By hand1. Finite-difference method2. Auto-differentiation3. Complex step method 다음과 같이 설명할 수 있다. 0. By hand만약 목적함수가 파라미터에 대해 간단하게 표현되어있다면 사전에 gradient를 계산해서 결과 값만 대입하면 쉽게 구할 수 있다. 1. Finite-..
[알고리즘] KDTree로 가장 가까운 포인트 찾기
·
연구 Research/데이터과학 Data Science
K-neighbor 알고리즘에서 근접한 포인트를 찾을 때 다양한 방법으로 구할 수 있다.그 중 KD tree 방식을 이용한 효율적인 근접 포인트 찾는 알고리즘을 기록한다. import jax.numpy as jnpfrom jax import vmapclass KDTreeJAX: def __init__(self, data, depth=0): self.axis = depth % data.shape[1] self.median_idx = len(data) // 2 # Sort data along the current axis sorted_data = data[jnp.argsort(data[:, self.axis])] self.median_poi..
[라이브러리] Physic simulation for robotics and engineering
·
연구 Research
최근 들어서 엔비디아가 시뮬레이션 쪽으로 많이 연구를 진행하고 있음을 알았다.아무래도 로봇 시뮬레이션 쪽은 강화학습 방법론이 대세로 기울고 이 강화학습 특성 상 시뮬레이션을 돌려야 한다.다른 한 편으로는 최근 그래픽스, 시뮬레이션 분야에 대한 관심으로 디지털 트윈으로 실제와 컴퓨터 모델 간의 간격을 줄여서 설계, 제어 등에 반영하고자 하는 연구 흐름이 있다. 그래서 python에서 코딩이 가능한 Physic simulation library를 알아보는 기록을 남긴다. 1. Isaac Sim 엔비디아에서 개발하고 있는 물리 시뮬레이션. 2. SAPIENUCSD에서 개발한 오픈소스 물리 시뮬레이션 3. Pybullet 4. MuJoCoMuJoCo의 경우에는 JAX와 호환이 되도록 제공하는 라이브러리(http..
NVIDIA warp 소개
·
연구 Research
최근 differentiable simulation / graphics가 연구가 되고 있다. 특히 GPU 존재 자체가 그래픽의 빠른 연산을 위해 나온 것이기 때문에 NVIDIA에서도 관심이 많은데 파이썬 기반의 고성능 GPU 시뮬레이션을 가능하게 하는 라이브러리 warp를 배포하고 있다. https://github.com/nvidia/warp GitHub - NVIDIA/warp: A Python framework for high performance GPU simulation and graphics A Python framework for high performance GPU simulation and graphics - NVIDIA/warp github.com 1. 설치 설치 방법은 위의 github..
Sampling algorithm 관계 정리 및 요약
·
연구 Research
요즘 데이터 양/컴퓨팅 파워의 증가와 머신러닝/딥러닝 증가로 인해 통계적 방법론, 확률론적 방법론이 주목받고 있다. 기존에 있던 확률 책을 보면 랜덤 변수를 추출하는 방법에 대한 이야기가 있는데 샘플링 방법론과 결을 같이 한다. 내가 알고 있는 분포가 있을 때 이 분포를 따르는 표본을 얻기 위해서는 어떤 알고리즘을 써야할까? 이에 관련된 내용이 sampling method이다. 아래의 Rejection sampling, importance sampling, inverse cumulative distribution function은 나중에 다룰 생각이다. 1. Markov chain Markov chain은 stochastic dynamical environment를 모델링한 것으로 state transi..
[연구] SciML 분야 라이브러리 기록
·
연구 Research/인공지능 Artificial Intelligent
물리기반 인공지능 관련해서 접근성을 높이기 위한 여러 라이브러리가 있다. 보통은 코드를 직접 작성하는게 낫지만 빨리 테스트해보고 싶을 때는 라이브러리가 도움이 많이 되기 때문에 저장한다. 1. Python - PyTorch 1.1. TorchDiffeq Neural ode 창시자인 Chen이 배포한 코드 : https://github.com/rtqichen/torchdiffeq 1.2. DeepXDE Arxiv에 올라와있는 http://arxiv.org/abs/1907.04502에서 더 많은 정보를 얻을 수 있다. (논문 정보 L. Lu, X. Meng, Z. Mao, and G. E. Karniadakis, “DeepXDE: A deep learning library for solving differe..
[chatGPT] chatGPT 프롬프트 엔지니어링
·
연구 Research/인공지능 Artificial Intelligent
chatGPT의 흥미로운 점은 어떤 프롬프트를 쓰느냐에 따라 결과가 달라질 수 있다는 점이다. 이런 측면에서 더 나은 프롬프트를 사고 파는 시장까지 생겼다고 하니, 세상에는 참 많은 아이디어가 돈이 된다 싶기도 했다. 실제 openAI에서는 몇 가지 유용한 강좌를 제공해준다. 그중 하나가 지금 이야기하고자 하는 ChatGPT Prompt Engineering for Developers라는 강의이다. chatGPT를 더 유용하게 사용하기 위해 어떻게 명령을 넣으면 좋을지에 대해 설명해준다.80퍼센트 정도 들었는데 충분히 chatGPT를 사용하는 법에 대해 익숙해지기 좋은 것 같다.나중에 시간이 나면 어떤 식으로 프롬프트를 하는지 정리해놓고 싶다. (크흠..) 괜히 이상한 유튜브에서 chatGPT 설명을 찾..
[JAX] L-BFGS optimizer로 학습하는 예제 코드
·
연구 Research/인공지능 Artificial Intelligent
Quasi Newton method를 이용해서 JAX에서 최적화를 시키고 싶었는데 JAX 자체가 Deep learning에 포커스가 있고 대부분 딥러닝이 Gradient descent method로 최적화를 하다보니 라이브러리를 찾게 되었다. 대부분 jaxopt라는 라이브러리를 추천했기 때문에 이걸로 수행해보았다. jaxopt에는 jaxopt.ScipyMinimize와 jaxopt.LBFGS가 있는데 다른 분들의 시도를 보니 ScipyMinimize가 더 성능이 괜찮은 것 같다. ScipyMinimize는 scipy에 있는 최적화를 사용한 것이고 LBFGS는 직접 만든 것 같은데 line search 방법 등이 다르다고 한다. import jax import jax.numpy as np from jax ..
[Deep learning] Bayesian Neural Network (1)
·
연구 Research/인공지능 Artificial Intelligent
맨날 Bayesian Neural Network (BNN)에 대해서 얘기를 듣다가 좋은 강의를 접하게 되어서 요약 정리하고 개별 내용을 보는 것이 어떨까 생각한다. 모든 자료들이 notation을 다르게 쓰다보니 따라가기 어려운 점이 있기도 하고.. 만약 BNN 관련한 라이브러리를 한 번쯤 보신 분들이라면 MCMC, Dropout, Stein Variational Gradient Descent, Variational Inference 등 알 수 없는 용어들을 봤을 것이다. 필자도 배우는 단계이기 때문에 공부하면서 이 글이 수정될 수도 있다. 다루고 싶은 내용은 1) Bayesian Neural Network의 이론 기반 2) BNN에 포함되는 알고리즘 3) BNN Implementation (JAX 라이..