Browsed by
[Category:] SW Development

Up and Running for Protobuf

Up and Running for Protobuf

다른 시스템과 데이터를 주고 받는다거나 용량이 큰 데이터를 효율적으로 저장하기 위해서는 데이터를 압축하거나 다른 효율적인 방법이 필요하다. 인터넷을 통해 데이터를 효율적으로 주고 받기 위해 많은 사람들이 고민을 해 왔고 그 중 요즘 Defacto Standard로 사용되는 것이 Google에서 만든 Protocol Buffer(a.k.a Protobuf)라는 것이다. Protocol Buffer는 language 중립적이고 데이터를 Serialize할 때 쉽게 확장 가능한 구조를 제공한다는 특징을 가지고 있다. Protocol Buffer를 사용하기 위해서는 몇가지 설치가 필요하다. 먼저 Protocol Compiler(확장자 .proto 파일을 컴파일하기 위해 사용됨)와 사용하고자 하는 language에 맞는 Protobuf Runtime을 먼저 설치해야…

Read More Read More

향후 50년은 초지능을 가진 두뇌를 만드는 시대

향후 50년은 초지능을 가진 두뇌를 만드는 시대

몇 년전 부터 AI가 IT업계의 메인스트림으로 인식하고 있다. 이제 AI가 가져다 줄 변화에 두려움이 느껴지기도 한다. AI가 어떻게 동작하는지 기술적인 관점에서 바라보는 것도 재미 있지만 좀 더 큰 그림, 한 1km 높이에서 AI기술을 이루는 큰 블럭들을 바라볼 수 있다면 요소 기술을 접하는데 더 도움이 될 것이다. AI가 보편화 될 수록 관련 기술 생태계는 아래의 그림과 같이 구성될 것이다. 지금까지의 IT 또는 SW의 발전은 더 나은 계산기를 만드는 과정이었다고 보면 된다. 즉 더 나은 CPU와 이를 활용하는 더 나은 SW로 다양한…

Read More Read More

ChatGPT가 하는 것이 무엇이고… 왜 동작하는 걸까?

ChatGPT가 하는 것이 무엇이고… 왜 동작하는 걸까?

2022년11월 ChatGPT를 처음 접하던 날 내가 받은 인상을 아직도 생생하게 기억한다. 프롬프트 뒤에는 사람이 직접 입력을 하고 있다는 우스게 소리도 있었다. 내가 질문한 답을 기-승-전-결에 맞추어 군더더기 없이 깔끔하게 설명을 해주다니… 그것도 오류없이. 이게 가능하단 말인가! 더구나 프로그래밍 관련 질문에 Boilerplate Code를 곁들인 답을 뱉어 내는 것을 보며서 이제 정말 개발자의 종말을 보게 될 것인가란 약간의 두려움도 있었지만 ChatGPT가 내부에서 어떤 과정을 거치기에 이런 놀라운 결과를 만들어내는지 궁금해 지지 않을 수가 없었다. GPT 이전의 AI는 주로 수학적인 설명을 토대로 미래를…

Read More Read More

React의 Template(JSX)은 어떻게 동작할까?

React의 Template(JSX)은 어떻게 동작할까?

인터넷에 글을 보다가 평소에 음.. 그렇게 동작하는 군.. 하지만 내부에서는 어떻게 동작을 하는걸까 하고 생각하던 내용을 마주하게 됐다. 나의 궁금증을 99% 해결해 주는 내용이라 이해한 내용을 잠시 옮겨볼까 한다. 웹 어플리케이션을 개발하는 개발자들 사이에 React, Vue 등을 언급하는 것을 많이 볼 수 있다. 개인적으로 이런 프레임워크를 그리 선호하지는 않는다. 왜냐하면 히트곡이나 패션 아이템처럼 잠시 왔다 스쳐 지나가는 유행처럼 보이기 때문이다. 하지만 이들 근간에는 어떤 기술이 활용되고 있는지 파악해 놓을 필요는 있다. 그래야 유사한 형태의 프레임워크가 나오더라도 쉽게 이해할 수 있고…

Read More Read More

Transformer

Transformer

참고: The illustrated Transformer GPT는 Generative Pre-trained Transformer의 약자라고 알고 있다. 여기서 가장 중요한 역할을 하는 것이 Transformer일 것이다. 그렇다면 Transformer가 어떤 기능을 하기에 가장 중요한지 궁금증을 가지지 않을 수 없다. 논문의 포함해서 여러 자료를 살펴봐도 글자만 보이지 문맥이 보이지 않았는데 이 문서를 보고서 무릅을 탁 치게 되었다. 우선 쉬운 설명을 통해 궁금증을 해결하도록 해 준 Jay Alammar에게 감사를 드리고 나의 언어로 다시 정리해 보고자 한다. 나중에 자세하게 설명하겠지만 Transformer는 내부적으로 Attention이라는 개념을 사용한다. 이를 사용함으로써 그동안 문제로 지적됐던 느린…

Read More Read More

MySQL 오류 수정: Warning: got packets out of order. Expected 10 but received 0

MySQL 오류 수정: Warning: got packets out of order. Expected 10 but received 0

MySQL에서 언제부턴가 아래와 같은 메시지가 콘솔 로그에 눈에 띄기 시작한다. 그 전부터 오류 메시지가 있었는데 확인을 못하고 있었을 수도 있다. 데이터 베이스 동작에는 문제가 되지 않는데 경고 메시지가 계속 눈에 거슬려 수정해 보기로 하고 몇 시간을 투자 한 결과 원인과 해결 방법을 알아 냈다. 현상 재연 정확한 현상 재연은 아래와 같다. Nodejs의 mysql2 db connection라이브러리를 활용하며 데이터 베이스 오퍼레이션 후 정확하게 8시간(28,800초)이 지나면 위의 로그 메시지가 출력된다. 좀 더 쉽게 현상을 재연하려면 mysql 의 설정파일인 /etc/mysql/mysql.cnf 에 아래의 속성을 추가…

Read More Read More

Generative Deep Learning

Generative Deep Learning

What is Generative Modeling? Generative modeling is a branch of machine learning that involves training a model to produce new data that is similar to a given dataset We can sample from this model to create novel, realistic images of horses that did not exist in the original dataset. One data point in the training data is called as observation. Each observation consists of many features. A generative model must be probabilistic rather than deterministic, because we want to be…

Read More Read More

Deep Learning: Neural Network in TensorFlow

Deep Learning: Neural Network in TensorFlow

Model Neural network and Deep learning Layer: a data processing module the kernel and bias = weights model compilation epoch model’s evaluate method backpropagation gradient of loss Why do we need gradient? MSE (Mean Squared Error) Adding nonlinearity: Beyond weighted sums

The Art of WebAssembly

The Art of WebAssembly

There are two primary styles of WAT coding to choose from. One style is the linear instruction style list. The other coding style is called S-Expressions. Unserstanding WAT: MDN Docs Stack Machines For example, local.get is defined to push the value of the local it read onto the stack, and i32.add pops two i32 values (it implicitly grabs the previous two values pushed onto the stack), computes their sum and pushes the resulting i32 value When a function is called,…

Read More Read More