"전 ~~할땐 sigmoid 보다 tanh 를 써요. 결과가 더 ~~ 하데요"
"tanh 는 생각못했는데 그것도 괜찮겠네요~"
라는 식의 글을 봤다.
하지만, 불행히도.
sigmoid function 과 tanh function을 google씨에게 물어보면..
engineering 관점에서 두 function이 동일한 function임을 쉽게 알 수 있다.
-engineering 관점에서 동일하다함은, tuning value의 조정만으로 같아지는 function이라는 얘기다
말하자면 위의 대화는
"전 2+2보다 2*2가 결과가 잘나오는거 같아요~"
뭐 이런...식이라고 해야하겠지..ㅎㄷㄷ
중학생도 알 수 있을만큼 복잡하지 않은 변환으로 알 수 있는 내용이니..
설마 수식을 보고도 몰랐을 리는 없고..
요는,
sigmoid 건, tanh 건 어떤 논문을 통해서건 아니면 누군가의 블로그, 칼럼을 통해서건
아~ 이럴때 이런 function을 쓴다더라
라고 하면, 그 내용에 대한 최소한의 조사도 없이 맹목적으로 사용한다는 것이겠지.
거기다... 그들이 불행히도 검색업계의 알만한 기업에서 어느 정도 포지션을 갖고 있다는 것이..
암담한 현실이랄까.
덧붙이기 : 아아..거기다가 sigmoid는 0~1 value 를 가지니 확률로도 사상할 수 있다~ 라는...
무시무시한 소리도....0~1이라 확률로..라니..확률이 뭐라고 알고 있길래;;
(물론 ,0~1 value를 갖는 연속내지는 미분가능함수는 확률로 사상할 수 있다.
cdf로 보고, pdf 의 distribution을 domain이 만족한다는 가정 혹은 증명 아래서 말이지.
0~1 이 되니 아무거나 집어넣어놓고 확률이에요 하면 곤란하다고..)
hadoop을 사용하면서 다양한 문제에 부딛히게 되었지만, 그 중에서도 가장 빈번히 당혹스럽게 하는
것은, collect과정에서의 에러들.
같이 일하는 shurain군은, 그런 에러들을 보면서 한마디 하곤한다.
"대체, 이럴때 제가 할 수 있는 일이 뭐가 있죠?"
코드 상의 버그도 아니고, 설정상의 오류도 아니고, 그저, 파일에 써보렴! 이라고 했는데
다양한 에러들을 뱉어내며 죽어버리는 task들을 볼땐, 나도 저 말이 떠오르곤 한다....
map 과정에서의 collect와 reduce 과정에서의 collect는 약간 다른 동작을 가지고 있지만,
공통적으로 들어가는 것은,
1. memory byte buffer로 collect된 객체들을 쓴다.
2. 납득할 수 없는 아주 저렴한? 알고리즘으로 계산된 buffer overflow계산을 통해,
buffer가 꽉 차면 flush 한다...
stream이라면, 누가 하더라도 당연히 갖고 있는 두 가지 과정인데..
희한하게도 hadoop은 저 과정들을 제대로 수행하지 못하는 경우가 태반이다.
좀 더 세세히 살펴보아야 하겠지만,-전혀 그러고 싶은 욕구는 생기지 않는다- 예상되는 바로는
1.저렴한, 아주 저렴한...누구도 납득할 수 없는 buffer overflow계산 알고리즘..의 문제.
황당하게도, stream인 주제에, out of memory를 내며 뻗는 경우도 있으니..할말 다했지..
2.flush를 하는 과정에서 buffer를 나눠 쓰는 알고리즘의 문제.(이건 안열어봤다.)
3.collect과정에서 즉, mapreduce package쪽 buffer를 1차로 거치고, dfs쪽에서 다시 stream을
사용하면서 buffer를 거치는데, 역시나 1과 연관된 이유로 인한 이중으로 사용되는 buffer를
제대로 처리하지 못하는 문제...
등이 머리속에 떠오른다.
뭐, 코드야 어찌되었던, hadoop을 고쳐주고 싶은 마음은 이제 생기지 않기 때문에,
대충의 해결책을 찾았는데...
collect를 호출하지 않고, output format으로부터 직접 writer를 가져와 write를 통해 쓰거나,
이것도 미심쩍은 경우에는, 직접 output format을 작성하는 것이다.
아마도, hadoop내의 mapreduce 쪽 코드보다는 dfs쪽이 좀더 안정화되어 있는듯,
collect를 통하지 않은 write만으로도 대부분의 에러상황을 피해갈 수 있다.
덧붙이기 : 여기 써놔봐야..읽을 수 있겠냐마는, 아무리 오픈소스라지만, 제발 니 머리속에서만
검증된 코드들을 작성해서 commit 하지 말란말이다...
-------------------------------------------------------------------------------------- 여기저기 확인해본 결과, hadoop 의 buffer 사용 쪽의 code들이 전체적으로 불만족 스러운듯. buffer size에 대한 soft limit을 적용한 결과.. 필수적으로 필요한 memory를 확보하지 못한채 flush 를 시작한다던가, 아예 flush도 못하고 그냥 죽어버린다던가..... 이에 대해...답변은...쩝. 좋은 컴퓨터에 메모리 많이 잡고...돌려라..정도라니 =_=; stream에서 out of memory 뜨는 걸 확인하는 순간...심각하게 고민을 해봤어야했다고. 이제와서 조금 후회중.
이 글의 관련글(트랙백) 주소 :: http://www.waityet.net/trackback/15
Tracked from Psychedelic Mind 2008/03/27 17:08 x
제목 : 요새 하는 일
http://waityet.tistory.com/entry/chunk-view
요새 회사에서 이런 일도 하고 저런 일도 하고... "저것"의 오너쉽은 waityet에게 있지만 팀의 많은 사람들이 고민한 이야기 :)
Tracked from D군동네 2008/03/27 20:32 x
제목 : Chunker's rolling out!
휴우... 빡센 한주가 가고 있다. 회사에서 틈만 나면 대통일 클러스터링이 어쩌고 저쩌고 하며 떠들던 우리 팀들, 드디어 두근거리는 가슴을 안고 잘라 봤는데... ㅎㄷㄷ 정말 생각대로 졸라짱 훌륭하게 잘라냈다. 그다지 큰 문서셋은 아니지만, 튜닝이고 뭐고 할 것 없이 거의 완벽하게 잘라내셔서 감동먹었다. 후후, chunker 주인 겸 visualizer 주인인 waityet도 결과가 너무 잘 나와서 물고있던 담배를 떨어뜨릴 정도로 놀라셨다고 한다...