

작년 이전 직장에서 CV팀에서 D* 보험회사에 보험서류 위조 판별 모델, PoC데이터(실제 환경에 적용하기 전에 유효성 검증하는 과정)를 다루며 납품할 당시 우리 업무와 같은 일을 한다고 하며 들어본 회사이다. CV 쪽에서 굉장히 성과를 많이 내는 곳이기도 하고 Solar pro 모델 출시와 더불어 앞으로가 더 기대되는 회사여서 이전부터 굉장히 관심있게 보고 있엇으며, 과연 내가 갈 수 있을까 하는 속앓이를 하며 있다가 이렇게 연락이 오게되어 기분이 매우 좋았다. 인터뷰 직전에 이 회사에 대해 조금 더 알아보기 위해 정리해 보았다.
AI 기술을 활용하여 비즈니스 문제를 해결하는 데 주력하는 회사로, 복잡한 의사결정 지원 및 비용 절감을 통해 기업의 생산성을 향상시키는 AI 솔루션 개발에 주력. 이를 통해 업무 처리 방식을 혁신하고 기업들이 더 효율적으로 성장하도록 지원. 특히 Document AI를 포함한 다양한 API 시리즈를 통해 고객사의 비즈니스 성공에 기여함.
기술적 전문성을 기반으로 프로젝트 및 프로그램 관리 담당을 한다. 엔지니어링 팀, 제품 팀, 비즈니스 이해관계자들 사이의 다리 역할을 하면서, 제품 발전 방향성에 맞게 프로젝트들을 조율하고 관리한다.
조직의 목표 달성을 위해 필요한 기술적, 운영적 조율 담당. 회사의 방향성과 프로젝트의 방향성이 일치하도록 역할 수행
✅ OCR은 필기 문서, 활자 인쇄물 등을 디지터 이미지 파일로 변환하고 다시 이미지를 텍스트로 변환하는 SW를 총칭한다.
✅ 이 분야는 이전 직장에서 약간의 경험이 있다. 보험 서류의 위조 방지를 위해 대규모 라벨링을 직접하여 보험금 지급 등의 환자 기록을 처리하는데, 데이터의 정확도도 증가시키고 중요 문서를 전달하는 과정에서의 오류 가능성을 줄인다.


✅ 업스테이지에서 개발한 추천 시스템 관련 기술 패키지. 일반적으로 사용자의 행동, 기호, 구매 패턴 등 다양한 데이터를 기반으로 최적의 상품이나 서비스를 추천해 주는 시스템을 포함한다. 실제 상업 환경에서 Recsys Pack을 테스트하며 해당기술이 브랜디의 플랫폼에 맞게 잘 작동하고, 사용자에게 맞춤형 추천을 제공하여 고객 만족도를 높이고, 결과적으로 판매 증진에 기여할 수 있는지 확인하는 것
브랜디의 목표 달성 시키기(노출 당 구매 전환 금액 최대화)
- CTR은 높고 CVR은 낮을 때
- 유입된 클릭률은 높고, 전환율이 낮다면 전환 목표를 달성하지 않고 이탈하는 사용자가 많음을 유추
- 유입된 사용자가 우리의 목표 타겟층이 아닐 가능성이 있거나 광고 노출 타겟, 지면 등을 점검 혹은 노출 중인 광고와 랜딩페이지가 일치하지 않거나, 전환 목표인 회원가입, 결제단계, 설치과정이 복잡하거나 원활하지 않다거나 하는 등의 유입 이후의 문제점
- 광고와 실제 랜딩페이지 그리고 전환 목표에 이르기까지 필요한 사용자 액션을 하나하나 점검하고 개선시켜 CVR dmf shvdlsek.
- CTR은 낮고 CVR이 높을 때
- 광고를 통해 유입된 사용자 수가 상대적으로 적지만, 유입된 사용자의 대부분이 전환 액션을 취한다고 유추
- 타겟층에 변화를 주기보다 조금 더 효율적이고, 적합한 노출 지면을 찾는 시도를 하여 노출 수 증가
- 만약 노출 지면에 큰 이상이 없다면, 선정된 타겟층의 모수가 너무 적은 문제일 수도 있으므로 타겟층에 조금씩 변화를 주는 것도 방법

✅ 지난 9월 11일 업스테이지가 개발한 자체 사전학습 거대모델(LLM) 솔라(Solar)
Solar-pro-preview, solar-pro-preview-instruct가 오픈소스 모델로 출시 되엇다. 처음으로 공개했던 모델 Solar 10.7B 보다 2배 이상 큰 파라미터 수(22.1B)를 가지고 있으며, 단일 GPU에서 효율적으로 실행할 수 있다.
model = AutoModelForCausalLM.from_pretrained(
"upstage/solar-pro-preview-instruct",
device_map="cuda",
torch_dtype="auto",
trust_remote_code=True,
)
def __init__(
self,
vocab_size=32000,
hidden_size=4096,
intermediate_size=11008,
num_hidden_layers=32,
num_attention_heads=32,
num_key_value_heads=None,
hidden_act="silu",
max_position_embeddings=2048,
initializer_range=0.02,
rms_norm_eps=1e-6,
use_cache=True,
pad_token_id=None,
bos_token_id=1,
eos_token_id=2,
pretraining_tp=1,
tie_word_embeddings=False,
rope_theta=10000.0,
rope_scaling=None,
attention_bias=False,
attention_dropout=0.0,
mlp_bias=False,
sliding_window=2047,
bskcn_1=[12, 20, 32, 44],
bskcn_2=[20, 32],
bskcn_3=[16, 24, 36, 48],
bskcn_4=[28, 40],
bskcn_tv=[0.9,0.8],
**kwargs,
):
# modeling_solar.py line 1051~
# decoder layers
all_hidden_states = () if output_hidden_states else None
all_self_attns = () if output_attentions else None
next_decoder_cache = None
bskcn_1 = None
bskcn_2 = None
bskcn_tv = self.config.bskcn_tv[0] if self.training else self.config.bskcn_tv[1]
for layer_idx, decoder_layer in enumerate(self.layers):
if layer_idx in self.config.bskcn_1:
bskcn_1 = hidden_states
if layer_idx in self.config.bskcn_2:
bskcn_2 = hidden_states
if layer_idx in self.config.bskcn_3:
hidden_states = (bskcn_1*bskcn_tv).to(hidden_states.device) + hidden_states*(1-bskcn_tv)
if layer_idx in self.config.bskcn_4:
hidden_states = (bskcn_2*bskcn_tv).to(hidden_states.device) + hidden_states*(1-bskcn_tv)

https://eda-ai-lab.tistory.com/613
https://blog.naver.com/mars_upstage/223410182396
https://www.upstage.ai/blog/ko/recsys-ai-challenges-interview