Open syleeie2310 opened 3 months ago
모든 데이터 합쳐서 vivekn 모델로 감성 분류 해보기 https://sparknlp.org/2021/11/22/sentiment_vivekn_en.html
허깅페이스로 스타, 점수 추출해서 피쳐로 만들기 -> 작업이 오래걸리면 mulitprocessing 라이브러리 참고해서 코드 수정해서 돌려보기 (or joblib)
===> 목표 : 피쳐 만들기
허깅 페이스 512개 토큰. -> 텍스트 길이 분포 확인할 것 (512개보다 토큰 긴 리뷰가 몇개나 있는지?)
둘다 델타 테이블로 저장 부탁드리고, 저장 한 다음에 데이터 탐색 해주세요.
탐색적 데이터 분석 (긍부정 결과 vs 리뷰 평점)
<vivekn 모델>
<transformer 모델>
각각 10개 저장하는데, 10초, 3분이 걸립니다! multiprocessing 찾아봤는데, 적용할 만할 것을 찾기 어려웠습니다!
그래서 파티션 나눠서 저장하고 있는데, 이런식으로 저장하는게 빠른게 맞을까요?!
11저장할때는 41초, 기본으로 10개 할때(10초)걸렸습니다!
불러오는 시간은 기본10개 (56초), 파티션(11) (14초)였습니다!
아니면 이렇게 parquet 파일로 저장한 후에, 불러와서 저장하는게 더 빠를까요?
limit은 파티션 갯수랑은 상관없는데.. 파티션은 executor X Core 갯수만큼 사용하는게 일반적이긴 해요
저희 싱글머신에 core 4개니깐 파티션 4정도가 적당해 보입니다.
limit 11 을 설정하면 11개 데이터만 들어가지 않아요?
아 리밋11은 시간이 얼마나 걸리는지 확인해보려고 저장해본것입니다!
1) 만약 허깅페이스 모델 기존 레퍼런스 사용해서 돌린다고 하면 멀티프로세싱 사용해서 데이터 쪼개서 돌린다. (loop로)
2) 동일한 모델이 SparkNLP 있어서 저 방식대로 돌아가는지?
spark 멀티프로세싱했을 때,
이러한 에러가 발생합니다.
또한, 다른 방식으로 멀티프로세싱하려고 찾아보는데, 파티션을 더 나누라고 하거나
루프를 돌려서 하는건 효율적이지 않다는 얘기가 계속 있었습니다!
그리고 판다스로 바꿔서 잘라서 돌리려고 하니까, 모델 적용하는 함수가 스파크에 맞춰 있어서 그것도 실패중입니다. ㅠㅠ
joblib도 활용해보려는데, 계속 에러 뜨고 적용이 잘 되지 않고 있습니다...
여기 failed 떠있으면 시간 계속 들여도 안돌아가나요?!
fail 되었을 때의 상황과 연결되긴 하는데 스파크 작업만 생각해보면 fail 되도 retry 해서 성공하기도 하는데요. 혼자 쓰는 싱글머신에선 그럴 가능성은 더 적을거 같기도 하네요
이게 스파크 (Java 메모리 영역)이냐 순수 파이썬 영역이냐에 따라 다른건데
외부 모델을 사용하는 허깅페이스는 후자에 가깝다보니 스파크랑 크게 상관이 없어서 그 프로세스의 메모리가 부족되는 가능성이 높다고 하면
결국 fail 되는 상황의 에러나 로그 들을 봐야 좀 더 판단할 수 있지 않을까 싶어요.
vivekn 탐색 더 해보고 활용할 수 있는 영역 찾아보기
https://www.johnsnowlabs.com/sentiment-analysis-with-spark-nlp-without-machine-learning/