포획 크로마토그래피: 하이브리드 모델과 실시간 풀링
📍 현재 위치: 4부 · 학습된 하류(Downstream, Learned) — 13장. 지난 장은 수확 종료점을 예측하고 청징된 수확물을 우리에게 넘겨주었습니다 — 여전히 숙주세포 단백질, DNA, 그리고 배지를 실은, 수백 리터의 묽고 항체를 담은 액체입니다. 이제 그 액체가 첫 번째 컬럼과 만납니다. 포획(capture)은 대부분의 불순물이 단일 단계에서 떨어져 나가고 그 과정에서 제품이 여러 배(several-fold)로 농축되는 곳이며 — 우리 캠페인에서는 8 L, 5.88 g/L 청징 적재물이 1.9 L, 22.58 g/L 풀이 됩니다 — 또한 계산 모델이 이미 상용으로 일상화된 유일한 하류 단계이기도 합니다. 그러나, 앞으로 보겠지만, 성숙한 것들은 기계학습이 아니라 기계론적(mechanistic)입니다.
CLAR-001에서 온 청징 수확물이 단백질 A 컬럼 위로 흐르고, 단일한 결합-용출(bind-and-elute) 주기에서 항체가 묽고 복잡한 배양액으로부터 끌려 나와 작고 농축된 저-pH 풀로 방출됩니다 — 나머지 하류가 연마(polish)하게 될 포획 풀 PApool-001입니다. 이것은 정제에서 가장 결과가 막중한 단일 단계입니다. 그것은 나머지 모든 것이 물려받는 불순물 바닥을 정합니다. 구체적으로, 포획은 정제 열차의 지배적인 숙주세포 단백질과 DNA 제거 단계로 — 보통 한 주기에 수 로그(several logs)의 HCP 제거 — 바로 그래서 피크의 후행 어깨를 끌어들이는 잘못 잡힌 풀이 HCP나 고분자량 응집체(서로 뭉친 항체 분자들 — 제품에 섞이지 않게 지켜야 하는 불순물), 즉 규격 미달(out-of-specification, OOS — 허용 한계를 벗어나 공식 조사를 촉발하는 출하 결과) 형제 배치 BATCH-2026-004 — 100 ng/mg 숙주세포 단백질 한계를 128 ng/mg로 위반하는 동반 운전 — 가 실패하는 바로 그 속성(HCP)을 앞으로 나를 수 있습니다. 용출 피크의 정확히 어느 조각을 보존할 것인가라는 결정 — 풀링(pooling) 결정 — 은 초 단위로 변하는 신호 위에서 실시간으로 수율과 순도를 맞바꿉니다.
크로마토그래피가 물리이기에 — 흡착, 물질 전달, 충전상(packed bed)을 통한 유체 흐름 — 여기서의 학습이 이 책의 진열장이리라 짐작하기 쉽습니다. 그렇지 않습니다. 진열장은 기계론적(mechanistic) 모델링입니다. 상용 공정 개발에 진정으로 배포된 제일원리(first-principles) 컬럼 시뮬레이터들이죠. 기계학습은 그 옆에 자리하여, 기계론적 모델이 서툰 일들을 합니다 — 지저분한 인라인 자취를 읽고, 풀의 타이밍을 잡고, 값싼 온라인 신호로부터 수율을 예측하는 것. 이 장은 그 선을 조심스럽게 긋고, 그다음 실제 크로마토그램 위에 ML 층을 만듭니다.
금 조각만 붙잡는 스펀지에 흙탕물을 부어 넣는다고 상상해 보세요. 먼저 적재(load)합니다 — 물이 통과하고, 스펀지가 금으로 차오르며, 그것이 넘치기 시작하는(금이 바닥으로 빠져나가는) 순간이 파과(breakthrough)입니다. 그다음 헹구고, 그다음 특별한 용매로 스펀지를 짜내면 금이 날카롭고 농축된 흐름으로 쏟아져 나옵니다. 그 흐름의 정확히 옳은 부분을 받아 내는 것 — 양동이를 너무 일찍 대면 헹굼물을 받고, 너무 늦게 멈추면 찌꺼기를 받습니다 — 이 풀링(pooling) 결정입니다. 기계론적 모델은 스펀지가 어떻게 차오르고 방출하는지에 대한 물리 시뮬레이션이고, 기계학습 층은 실시간 흐름을 지켜보며 "단계 전환," "지금부터 모으세요," "지금 멈추세요," "약 43그램을 회수하게 될 겁니다"를 외쳐 주는 운전자입니다.
이 장에서 다루는 내용
우리는 풍경에 대해 정직해지는 것으로 시작합니다. 기계론적 크로마토그래피 모델링 — Cytiva의 GoSilico와 오픈소스 CADET(두 곳의 선도적 컬럼 시뮬레이터)에 실린 일반속도모델(general rate model) 더하기 입체질량작용(steric mass action)(둘 다 다음 절에서 정의됨) — 이 여기서 성숙한 상용(production)급 계산 도구이며, 그것은 ML이 아닙니다. 그다음 우리는 학습이 진정으로 도움이 되는 곳에 그것을 둡니다. 하이브리드 기계론-플러스-ML 모델, 즉 물리가 못 박지 못하는 매개변수를 데이터가 채우게 하는 것. 파과와 동적 결합 용량(dynamic binding capacity, DBC) 예측, 즉 얼마나 적재할지를 실제 파과곡선 수학과 함께 결정하는 것. 인라인 UV와 전도도로부터의 실시간 풀링. 그리고 자동화된 크로마토그램 검토를 위한 단계 분류와 수율 예측. 실행 가능 산출물 examples/platform/ml/chromatography.py는 시뮬레이터의 단백질 A 포획 크로마토그램 — examples/datasets/protein_a_chromatogram.csv — 위에서 단계 분류기와 풀링-플러스-회수 모델을 훈련하고, 우리는 하나의 풀링 결정을 처음부터 끝까지 해부합니다.
학습 가능한 결정들의 집합으로 본 포획 단계
단백질 A 주기는 단계(phases)의 고정된 순서이며, 각각은 서로 다른 일을 하고, UV-전도도-pH 자취 위에서 서로 다른 모양을 가집니다. 우리의 모의 주기에서 그것들은 평형화(equilibration)(3 컬럼 부피 — 한 컬럼 부피, CV는 충전된 컬럼을 채우는 액체 부피로, 여기서는 1 L이며, 크로마토그래피 충전상을 통한 흐름의 자연스러운 단위입니다 — 수지(resin), 즉 항체를 선택적으로 붙잡는 다공성 단백질 A 비드로 된 재사용 가능한 충전상을 조건화), 적재(load)(8 CV, 청징 수확물이 흘러들어와 항체가 결합), 세척(wash)(4 CV, 느슨하게 결합한 불순물을 헹궈 냄), 용출(elution)(5 CV, pH를 약 3.3으로 떨어뜨리면 항체가 날카로운 피크로 방출됨), 스트립(strip)(3 CV, 저-pH 세정), 그리고 CIP(3 CV, 가성 정치세정, clean-in-place)입니다. 분당 0.5 CV, 초당 한 샘플이면 그것은 주기마다 3채널 신호 — UV280(컬럼 출구에서 280 nm 빛의 흡광도, 밀리흡광도 단위 mAU로 — 얼마나 많은 단백질이 지나가는지에 대한 값싼 실시간 대용 지표), 전도도, pH — 의 3120개 샘플로, 26 컬럼 부피에 걸친 여섯 단계, 즉 하류 검토자가 자취를 눈으로 읽어 내는 정전적(canonical) 결합-용출 일정입니다.
그 순서 안에 학습이 날카롭게 다듬을 수 있는 세 가지 결정이 자리합니다:
- 얼마나 적재할지. 너무 적게 적재하면 컬럼 용량을 낭비하고 필요 이상으로 많은 주기를 돌리게 됩니다. 너무 많이 적재하면 컬럼이 포화되어 항체가 결합하지 못한 채 바닥으로 파과(break through)하고, 제품을 잃습니다. 그 한계가 동적 결합 용량(dynamic binding capacity) — 운전 유속에서 파과 전에 컬럼이 붙잡을 수 있는 질량 — 이며, 그것은 상수가 아닙니다. 같은 수지 충전상이 여러 주기에 걸쳐 재사용되고, 검증된 주기 수명(교체 전까지 적격성이 인정된 재사용 주기 수)에 걸쳐 노화하면서 용량이 아래로 표류합니다.
- 각 단계가 언제 시작하고 끝나는지. 자동화된 검토와 모든 실시간 로직은 자취가 지금 어느 단계에 있는지를 신호만으로 알아야 합니다 — 분류 문제입니다.
- 용출 피크의 정확히 어느 조각을 보존할지. 풀링(pooling) 결정. 제품 피크의 상승 및 하강 에지에서 시작점과 정지점을 고르는 것입니다. 이곳이 수율과 순도가 만나는 곳이며, 그것은 움직이는 신호 위에서 실시간으로 내려집니다.
이들 각각은 모델이 값싼 온라인 신호를 읽고 하나의 결정 또는 하나의 숫자를 내놓는 자리입니다. 또한 각각은, 결정적으로, 결과가 한정되고 검토 가능한 자리이기도 합니다 — 모델이 고른 풀을, 그것이 실제로 모은 것의 분석값과 대조해 감사할 수 있습니다 — 바로 이것이 하류 ML이 상류의 자율 제어 환상보다 더 빨리 공장으로 들어온 이유입니다.
성숙한 도구는 ML이 아니라 기계론적이다 — 평이하게 말하라
어떤 학습보다 앞서, 크로마토그래피 컬럼의 가장 강력한 계산 모델은 편미분방정식(어떤 양이 공간과 시간 양쪽에 걸쳐 어떻게 변하는지를 추적하는 방정식 — 여기서는 컬럼을 따른, 그리고 시간에 따라 진화하는 농도)의 집합입니다. 일반속도모델(general rate model) 은 항체가 충전상을 따라 대류하고 분산되는 것, 다공성 수지 비드 안으로의 필름 전달과 공극 확산, 그리고 그 결합 동역학을 기술합니다. 입체질량작용(steric mass action, SMA) 등온선은 특성 전하와 입체 차폐 아래에서 단백질이 결합 자리를 두고 염 짝이온(counter-ion)과 어떻게 경쟁하는지를 기술합니다. 화학에 밝은 독자를 위한 한 가지 정밀 주의(처음 읽을 때는 건너뛰어도 됩니다): SMA는 이온교환 등온선입니다 — 그것은 연마 단계들과 아래에 인용된 음이온교환 파일럿을 지배합니다. 염 구배가 아니라 pH 강하로 용출되는 단백질 A 친화 포획은 보통 같은 GRM 수송 골격 위에서 랭뮤어 계열(Langmuir-family) 또는 pH 의존 친화 등온선으로 대신 닫힙니다.
평이하게 말하면 이 모델은 항체를 두 곳에서 동시에 추적합니다 — 비드 사이를 흐르는 것과, 비드 안으로 스며드는 것. 구체적으로, GRM은 컬럼 축을 따라 짝지어진 한 쌍의 물질 수지를 풉니다. 하나는 비드 사이 공극의 흐르는 간극(interstitial) 농도에 대한 것, 하나는 다공성 비드 내부의 농도에 대한 것이며, 비드 표면을 가로지르는 필름 전달 항으로 연결됩니다. 간극 수지는 대류 항(간극 속도로 움직이는 유체), 축방향 분산 항(이동하면서 퍼지는 띠), 그리고 단백질을 비드 안으로 빨아들이는 필름 전달 흡원(sink)을 나릅니다. 비드 수지는 공극 확산과 결합 동역학을 나르고, 등온선이 비드 표면에서 계를 닫습니다. 이름 붙은 물리 상수들 — 간극 속도, 축방향 분산 계수, 비드 반경, 컬럼 공극률, 그리고 필름 전달 계수 — 이 보정으로 못 박는 것입니다. 소규모 운전 한 줌에 대해 보정되면, 그러한 모델은 한 번도 운전된 적 없는 조건들에 걸쳐 용출 프로파일, 파과곡선, 그리고 풀링 창을 예측하는 기계론적 디지털 트윈(mechanistic digital twin)(실제 컬럼을 대신할 만큼 가깝게 모사하는 물리 시뮬레이션)이 됩니다 — 그리고 그것은 실제 물리를 부호화하는 데서 오는 훨씬 더 나은 외삽과 함께 그렇게 합니다 [1].
이것은 상용(production) 기술이며, 정전적 상용 구현은 2021년 Cytiva가 인수한 Cytiva의 GoSilico(ChromX/DSPX)입니다. Forschungszentrum Jülich의 오픈소스 CADET(IBG-1의 Eric von Lieres가 시작)은 학계의, 그리고 점점 더 산업의 역마(workhorse)로, GPL 라이선스 아래 GRM을 풉니다 [1][2]. 공개된 산업 사용자들은 실제 분자에 대해 기계론적 이온교환 및 혼합모드 모델을 만들어, 단 여섯 번 남짓의 정찰 운전으로부터 SMA 매개변수를 보정한 뒤 인 실리코(in silico)(실험실이 아니라 컴퓨터 시뮬레이션으로)로 품질 설계기반(quality-by-design) 공정 특성화를 돌렸습니다. 이것을 올바르게 귀속하는 것이 핵심입니다. GoSilico와 CADET은 기계학습이 아니라 기계론적입니다. 그것들을 "AI 크로마토그래피"로 취급하는 것은 벤더 광고에 거듭 나타나는 범주 오류이며, 이 책은 그것을 되풀이하기를 거부합니다. 그 수학은 적합된 블랙박스가 아니라 적합된 물리 상수를 가진, 풀린 물리입니다 — 매개변수가 무언가를 뜻하며(특성 전하, 필름 계수), 바로 그것이 모델이 외삽하는 이유입니다.
기계론적 크로마토그래피 모델링(일반속도모델 + SMA)은 하류 공정에서 가장 성숙하게 배포된 계산 기법이며 ML이 아니라 기계론적입니다 — Cytiva GoSilico(상용, CMC — Chemistry, Manufacturing, and Controls, 제품을 어떻게 만들고 관리하는지를 정의하는 규제 서류 부문 — 공정 개발에서)와 오픈소스 CADET이 그 본보기입니다 [1][2] (독립 동료심사 및 벤더 문서). 성숙도: 상용 / 상업 CMC. 모든 벤더 표제 숫자 — 예를 들어 "수율 +5%포인트"나 분자별 비용 절감 — 는 벤더 자체보고(근거 등급: 벤더)이며 반드시 그 라벨을 달아야 합니다. 모델링 능력은 잘 확립되어 있으나, 특정 절감액은 독립적으로 감사되지 않았습니다.
학습이 실제로 도움이 되는 곳: 하이브리드 모델
기계론적 모델은 그 매개변수만큼만 좋고, 그 매개변수 중 일부는 진정으로 측정하기 어렵습니다. 이 항체가 이 수지 로트 위에서 갖는 정밀한 결합 동역학, 수지 나이에 따라 용량이 시드는 방식, 운전마다 조성이 이동하는 공급물에 대한 등온선의 지저분한 의존성 등입니다. 이것이 바로 Book 2의 하이브리드 모델링 장(Book 2's hybrid-modeling chapter)이 짚어 낸 간극이며, Book 5의 하이브리드 장(Book 5 hybrid chapter)이 지배적 패러다임으로 삼는 것입니다. 신뢰하는 기계론적 골격은 지키고, 물리가 적어 내릴 수 없는 부분에만 작은 기계학습 구성요소를 쓰는 것입니다.
포획에서 하이브리드는 몇 가지 모양을 띱니다. 직렬(serial) 하이브리드는 신경망이 공급물 성질로부터 측정하기 어려운 등온선 또는 동역학 매개변수를 추정하게 하고 — 신경망이 공급 조성을 매개변수 벡터로 매핑합니다 — 그 매개변수를 기계론적 시뮬레이터에 공급하므로, 물리가 여전히 시뮬레이션을 하고 데이터는 그 입력만 공급합니다. 병렬(parallel) 하이브리드는 기계론적 모델을 돌리고 그 체계적 오차를 보정하는 학습된 잔차(residual)를 더하므로, 예측은 기계론적 프로파일에 각 시점의 데이터 기반 보정을 더한 것입니다. 어느 쪽이든 노동의 분담이 소량-데이터 승리입니다. 물리가 추세를 나르므로 신경망은 배워야 할 것이 훨씬 적고, 따라서 하류 캠페인이 실제로 산출하는 한 줌의 운전 위에서 성공할 수 있습니다. ANN(인공신경망, artificial neural network)을 집중-동역학(lumped-kinetic) 모델(수송 세부를 몇 개의 유효 속도 상수로 묶어 단순화한 컬럼 물리)과 짝지은 동료심사 단백질-포획 하이브리드는 바로 이 소량-데이터 영역에서 기계론-단독 베이스라인보다 현저히 낮은 파과-예측 오차를 보고하며, 직렬-대-병렬 분류법은 준매개변수(semi-parametric) 모델링 문헌에서 온 표준 틀입니다 [3].
여기서의 근거는 실재하지만 주의해 읽어야 합니다. 한 동료심사 파일럿 연구(mAbs, 2026)는 400개가 넘는 상업 로트에 걸쳐 30개 입력 인자를 품질과 수율에 대해 선별하여 상업적 음이온교환 연마 단계를 최적화했고, 평형-분산(equilibrium-dispersive) 및 SMA 기계론적 모델로 그 선별을 정련한 뒤, 4만 번이 넘는 인 실리코 최적화를 돌렸습니다 — 약 12% 더 높은 수율과 약 3분의 1 더 낮은 고분자량 불순물을 보고하며 [4]. 성숙도: 파일럿; 근거 등급: 자체 저자 동료심사. 그것은 진정한 하이브리드 작업이지만, 개선 수치는 저작 제조사가 자사의 단일 단계 공정에 대해 폐루프 제어가 아니라 인-실리코 최적화를 통해 자체 보고한 것이며, 독립적으로 재현되지 않았습니다. 마찬가지로, 물리정보 신경망(physics-informed neural networks, PINNs — 데이터에 적합할 뿐 아니라 지배 물리 방정식을 따르도록 훈련된 신경망)은 연속 4컬럼 주기 향류(four-column periodic counter-current, 4C-PCC) 포획 — 네 개의 컬럼을 순서대로 순환시켜 하나가 항상 적재하는 동안 나머지가 세척, 용출, 재생하는 연속 배치 — 의 실시간 모델 예측 제어(빠른 모델로 앞을 예측해 다음 최선의 수를 고르는 컨트롤러)를 위해 GRM을 충분히 가속하는 데 쓰였습니다 — 오프라인 파과곡선 적합을 대략 2608.6초에서 110.7초로, 온라인 평가를 12–14초로 줄이며 — 이는 배포된 공장 제어 루프가 아니라 어려운 문제에 대한 연구 결과입니다 [5]. 성숙도: 연구.
파과와 동적 결합 용량: 얼마나 적재할지 결정하기
적재 결정은 파과곡선(breakthrough curve) — 수지가 차오르고 항체가 결합하지 못한 채 빠져나가기 시작하면서 컬럼 출구에서 상승하는 UV 신호 — 에 달려 있습니다. 적재 부피(또는 질량)에 대한 출구 대 공급 농도의 비로 그리면, 그것은 고전적 S자 곡선입니다. 수지에 아직 빈 자리가 있는 동안에는 기준선에서 평평하고, 그다음 물질 전달 영역이 컬럼 출구에 도달하면서 가팔라지는 상승, 그다음 비가 1에 가까워지고 충전상이 포화되는 고원입니다. 동적 결합 용량은 관례적으로 고정된 파과 수준에서 읽습니다 — 가장 흔하게는 출구가 공급 농도의 10%에 도달하는 부피, "DBC10". 결합 질량으로의 변환은, 평이하게 말하면, 충전상이 얼마나 많은 항체를 붙들었는지를 그냥 더하는 것입니다. 매 순간 들어오는 것(공급)과 나가는 것(출구)의 차이가 충전상이 여전히 포획하고 있는 분율이고, 그 10% 지점까지 적재된 모든 부피에 걸쳐 그 포획 분율을 합한 다음 — 공급 농도로 스케일링하고 컬럼 부피로 나누면 — 리터당 컬럼의 결합 질량이 됩니다. (그 누적합의 형식적 형태는 적분이지만, 그림을 그리는 데 미적분은 필요 없습니다.) DBC10은 전용 파과곡선 특성화로 한 번 고정되고(수지가 노화하면서 재검증됨), 그러면 GMP(우수 제조 관리 기준, Good Manufacturing Practice — 규제된 상업 제조 체제) 배치는 그것의 검증된 안전한 분율로 적재하므로, 실시간 파과-자취 모델은 매 주기를 10%까지 돌릴 면허가 아니라 예기치 않은 조기 교차에 대한 안전장치로 기능합니다. 문제는 DBC가 고정되어 있지 않다는 것입니다. 그것은 수지가 검증된 주기 수명에 걸쳐 노화하면서 떨어지고, 유속(더 빠른 적재는 물질 전달 영역을 넓히고 DBC를 낮춤), 온도, 공급 역가에 따라 이동합니다. 파과 S자 곡선의 기울기는 물질 전달 동역학을 부호화합니다 — 날카로운 전선(front)은 얇은 전달 영역과 높은 가용 용량을 뜻하고, 번진 전선은 수지나 유동이 당신과 싸우고 있음을 뜻합니다.
이것은 깔끔한 예측 과제입니다. 수지의 주기 횟수, 적재 유속, 공급 역가(그 자체가 흔히 바이오리액터에서 소프트 센싱된 양(soft-sensed quantity from the bioreactor)), 그리고 실시간 파과 자취의 초기 몇 점이 주어지면, 모델은 곡선이 10% 임계를 넘는 곳을 예측하고 제품을 잃기 전에 적재 부피를 권고할 수 있습니다. 문헌에 두 가지 갈래가 나타납니다. 첫째는 기계론-우선입니다. GRM을 적합하고 모의 파과곡선에서 DBC를 읽어 냅니다 — 정확하며, 상용 기본값입니다. 둘째는 데이터 기반 모니터링입니다. 수율이 눈에 띄게 떨어지기 전에 수지 노화(resin aging)를 검출하기 위해 주기에 걸쳐 크로마토그래피 프로파일의 특징을 추적합니다. PCA(주성분 분석, Principal Component Analysis — 상관된 여러 신호를 표류를 포착하는 몇 개의 요약 방향으로 압축하는 통계 기법)와 배치 수준 모델링을 동반한 온라인 PAT(공정 분석 기술, Process Analytical Technology — 오프라인 실험실 결과를 기다리지 않고 인라인으로 실시간 품질을 측정하는 것)는 한 파일럿에서 관찰 가능한 수율 감소보다 20–25 주기 앞서 단백질 A 수지 노화를 검출하는 것이 보였으며, 제안된 세정 유발(cleaning-triggered) 전략은 수지 수명을 50–100 주기 연장하리라 예측되었습니다 — 모델링된 이익이지, 아직 검증된 GMP 결과는 아닙니다 [6]. 성숙도: 파일럿. 정직한 틀은 DBC 예측이 기계론적 접근과 ML 접근이 협력하는 곳이라는 것입니다. 곡선에는 물리, 물리가 모델링하지 않는 느린 표류에는 데이터.
실시간 풀링: 움직이는 신호 위의 가드 밴드
풀링 결정은 사람들이 "컬럼을 제어하는 AI"를 떠올릴 때 가장 많이 상상하는 것이므로, 실제로 무엇이 배포되었는지에 대해 정밀해질 가치가 있습니다. 실시간 풀링은 그 핵심에서 크로마토그래피 신호 위의 임계화 규칙(thresholding rule) 입니다 — 감시되는 신호가 가드 밴드(guard band) 안에 머무는 동안 용출액을 모으고, 그렇지 않으면 우회시킵니다. 가장 단순하고 흔한 경우에 그 신호는 UV280이고 규칙은 "선행 에지에서 UV가 차단값(cutoff) 위로 오르면 모으기 시작하고, 후행 에지에서 차단값 아래로 다시 떨어지면 멈춘다"입니다. 형식적으로 풀은 용출 단계 안에서 취한, 차단값의 첫 상승-에지 교차와 마지막 하강-에지 교차로 경계 지어지는 부피 구간입니다. 어느 두 번째 채널이 도움이 되는지는 화학에 달려 있습니다. 염-구배 이온교환 단계에서는 전도도(conductivity)가 제품과 용출하는 염 전선 사이의 경계를 잡지만, pH로 용출되는 단백질 A 포획 풀에서는 전도도가 거의 평평합니다 — 거기서는 pH(저-pH 용리액 전선)가 정보를 담은 보조 신호입니다. 더 정교한 스키드(skid)는 또한 평평한 절대 차단값이 아니라 UV 기울기(피크의 1차 도함수)로 시작과 정지를 촉발하거나, UV 자취를 적분하여 표적 흡광도-면적 또는 질량으로 풀링합니다 — 표준 계기 관행이며, 아래에서 논의하는 피크-모양 표류에 더 견고합니다.
학습은 어디로 들어올까요? 상용에서는, 풀을 제 마음대로 다시 그릴 자유가 있는 자율 에이전트로서가 아닙니다 — 그것은 초안 EU/PIC/S GMP Annex 22(draft EU/PIC/S GMP Annex 22) — GMP 제조에서 AI와 기계학습의 사용을 규율하는 초안 규제 지침 — 가 분명한 선을 긋는, 바로 그 종류의 품질 속성에 대한 적응적 제어입니다. 학습은 차단값을 설정하고 검증하는 것으로서, 그리고 결과를 예측하는 것으로서 들어옵니다. 각각 자신의 출하 분석값을 가진 과거 주기들 위에서 훈련된 모델은 순도 제약에 대해 회수율을 가장 잘 맞바꾸는 UV(또는 전도도, 또는 pH) 차단값을 학습할 수 있고 — 형식적으로, 숙주세포 단백질이나 응집체가 규격 안에 머무른다는 순도 제약 아래에서 회수율을 최대화하는 차단값을 고르고 — 그다음 그 차단값은 잠기고(locked) 고정된 규칙으로 돌아가며, 모델의 역할은 실시간 자율이 아니라 설계 시점과 모니터링입니다. 이 공간에서 가장 야심 찬 연구는 더 밀고 나갑니다. 합성곱망(convolutional-network)이 안내하는 라만(라만 분광법 — 분자의 화학적 지문을 읽는 인라인 레이저-빛 기법 — 을 합성곱 신경망, 즉 스펙트럼 전체에 걸친 패턴을 학습하는 이미지식 모델로 읽음)이 양이온교환 연마(polishing) 단계에서 산성, 주(main), 염기성 화학종에 걸쳐 0.94에서 0.99 사이의 R제곱(모델이 설명하는 변동의 분율로, 1.0이 완벽)으로 전하변이(charge-variant) 풀링 결정(항체를 표면 전하에 따라 산성, 주, 염기성 형태로 분류하는 것)을 내리는 데 쓰였습니다 — 그러나 그것은 다른 분리에 대한 연마 크로마토그래피(polishing-chromatography) 결과이며, 일상이 아니라 연구입니다 [7]. 성숙도: 연구.
포획에서 역마는 더 소박하고, 바로 그것이 요점입니다. 잠긴 UV 가드 밴드, 그것을 고르고 검증한 모델, 그리고 분석값이 돌아오기 전에 운전자가 무엇을 기대할지 알도록 회수된 질량을 예측하는 소프트 센서. 정확히 그것을 만들어 봅시다.
학습된 포획: 단계 분류기가 자취의 매 초를 라벨링하고, 용출 피크 위 잠긴 UV 가드 밴드가 상승 및 하강 에지에서 풀 시작과 정지를 고르며, 물질수지에 닻을 내린 소프트 센서가 회수된 질량을 예측한다 — 기계론적 컬럼 트윈을 대신하는 것이 아니라 그 옆에 자리하는 기계학습 층.
저자가 AI의 도움을 받아 직접 제작한 그림입니다.
만들어 보기: 단계 분류 더하기 풀링과 회수
실행 가능 모듈은 하나의 실제 크로마토그램 위에서 두 과제를 틀 잡습니다. 첫째, 단계 분류기(phase classifier). 세 가지 실시간 신호 — UV280, 전도도, pH — 더하기 가벼운 시간 맥락으로부터 매 1초 샘플을 여섯 단계 중 하나로 라벨링합니다. 모델은 그래디언트 부스팅 트리(gradient-boosted tree) 분류기(모델 사다리 장의 표형 트리-앙상블 학습기(tabular tree-ensemble learner from the model-ladder chapter)로, 앞선 트리들의 오차를 각각 보정하며 작은 결정 트리를 차례로 키워 나갑니다 — 여기서는 GradientBoostingClassifier, 깊이 3의 단계별 트리 120개, 시드 2026이며, 시드는 실행이 재현되도록 무작위 추출을 고정할 뿐입니다)입니다 — 의도적으로 소박한, 완전히 표형(tabular) 학습기로, 그 얕은 깊이-3 트리는 살펴보기 쉽고 GMP를 위해 잠그기가 사소합니다. 헐벗은 세 신호는 평형화를 세척과 혼동합니다(둘 다 낮은 UV, 중성 pH, 비슷한 전도도). 그것들을 가르는 것은 주기 안에서 당신이 어디에 있는가와 UV가 어느 방향으로 움직이는가이므로, 특징 벡터는 진행 중인 컬럼-부피 위치(cv_position), 30초 이동 UV 기울기(UV_slope), 그리고 UV, pH, 전도도의 이동 평균을 더합니다. 그 기울기 특징이 평형화의 평평한 기준선을 세척의 UV 감쇠로부터 가려 주는 것입니다. 위치 특징은 실시간에서 정직합니다 — 전달된 누적 부피는 언제나 알려져 있습니다 — 그러나 그것은 또한 강한 힌트이기도 하므로, 이 장은 아래에서 모델이 그저 시계를 학습하게 두지 않는 것에 대해 솔직히 말합니다.
둘째, 풀링과 회수(pooling and recovery). 모델이 예측한 용출 단계 안에서, 잠긴 100 mAU UV 가드 밴드를 적용해 컬럼 부피 단위로 풀 시작과 정지를 고른 다음, 물질수지에 닻을 내린 소프트 센서가 회수된 질량을 예측합니다. 회수 모델은 물리 천장을 부호화합니다 — 용출된 질량은 컬럼이 결합한 것을 넘을 수 없고, 그것은 적재된 질량과 용량(DBC 곱하기 컬럼 부피) 중 더 작은 것입니다 — 그리고 회수 분율이 그 간극을 채우게 합니다. 예측된 용출 질량은 결합 질량 — 적재 질량과 DBC 곱하기 컬럼 부피 중 더 작은 것 — 에 그 회수 분율을 곱한 것입니다. 이것은 소형 하이브리드입니다. 물리가 천장을 정하고, 데이터가 분율을 채웁니다. 분율에 대한 한 가지 정직한 단서: 공개된 단일-주기 데이터셋에서 0.92 회수 분율은 적합되는 것이 아니라 주기 요약에서 곧장 읽히므로, 43.2 대 43.3 g 일치는 하이브리드의 구조를 보여 주는 항등 점검(identity check)(n=1)이지 보류된(held-out) 적합이 아닙니다. 다중-주기 데이터셋에 걸쳐서는 분율이 적합되고 그 예측은 진정한 소프트 센서가 됩니다.
두 학습 과제는 소스에서 깔끔하게 나뉩니다 — train_phase_classifier()는 70/30 층화 분할(샘플의 70%로 훈련하고 30%는 떼어 두며, 각 단계가 양쪽 절반에 모두 표현됨)을 하고 보류된(held-out) 정확도(모델이 적합 중에 한 번도 보지 못한, 떼어 둔 행에 대한 점수로, 1.0이 완벽한 0–1 척도)와 매크로-F1(클래스별로 평균한 정확도 점수로, 모델이 흔한 단계에 무임승차하도록 두지 않음)을 보고하고, predict_pool()은 전체 자취에 걸쳐 분류기를 재실행하여 예측된 용출 안에서 가드 밴드를 적용하며, recovery_model()은 한 행짜리 주기 요약을 읽어 물질수지 예측을 계산합니다. 분류기 코드는 examples/platform/ml/chromatography.py에서 그대로 아래에 재현됩니다:
# examples/platform/ml/chromatography.py — phase classifier + pooling/recovery.
import pandas as pd
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, f1_score
POOL_THRESHOLD_mAU = 100.0 # locked UV guard band for collection
CV_ML = 1000.0 # 1 L Protein A column
def featurize(df):
f = pd.DataFrame()
f["UV280"], f["cond"], f["pH"] = df["UV280_mAU"], df["conductivity_mS_cm"], df["pH"]
f["cv_position"] = df["volume_CV"] # where in the cycle (CV elapsed)
f["UV_slope"] = df["UV280_mAU"].diff().rolling(30, min_periods=1).mean().fillna(0.0)
f["UV_roll"] = df["UV280_mAU"].rolling(30, min_periods=1).mean()
f["pH_roll"] = df["pH"].rolling(30, min_periods=1).mean()
f["cond_roll"] = df["conductivity_mS_cm"].rolling(30, min_periods=1).mean()
return f
df = pd.read_csv("examples/datasets/protein_a_chromatogram.csv").sort_values("time_s")
X, y = featurize(df).to_numpy(), df["phase"].to_numpy()
Xtr, Xte, ytr, yte = train_test_split(X, y, test_size=0.3, random_state=2026, stratify=y)
clf = GradientBoostingClassifier(n_estimators=120, max_depth=3, random_state=2026).fit(Xtr, ytr)
pred = clf.predict(Xte)
print(f"accuracy={accuracy_score(yte, pred):.4f} macro-F1={f1_score(yte, pred, average='macro'):.4f}")
# real-time pooling: collect inside predicted Elution while UV stays above the guard band
phase_hat = clf.predict(featurize(df).to_numpy())
elute = df[(phase_hat == "Elution") & (df["UV280_mAU"] >= POOL_THRESHOLD_mAU)]
start_cv, stop_cv = float(elute.volume_CV.iloc[0]), float(elute.volume_CV.iloc[-1])
print(f"pool {start_cv}-{stop_cv} CV = {(stop_cv - start_cv) * CV_ML:.1f} mL")
시뮬레이터의 황금 포획 주기 위에서 실행하면 검증된 출력이 나옵니다:
Phase classifier (GBT on UV/cond/pH + context): accuracy=0.9989 macro-F1=0.9989 (2184 train / 936 test samples)
Real-time pooling (UV280 >= 100 mAU in predicted Elution): collect 15.0-16.92 CV, pool 1916.7 mL
Recovery soft sensor: loaded 47.0 g, capacity 58.0 g, bound 47.0 g x 0.92 = 43.2 g (measured 43.3 g)
ASSERT ok: phase classifier recovers the chromatogram structure (accuracy > 0.9).
분류기는 여섯 단계 구조를 거의 완벽하게 복원하고 — 2184개로 훈련한 뒤 보류된 936개 샘플에서 정확도 0.9989, 매크로-F1 0.9989 — 풀 창(1 L 컬럼에서 15.0부터 16.92 CV까지 모아 1916.7 mL 풀)은 protein_a_summary.csv의 주기 요약과 정확히 일치하며, 회수율 소프트 센서는 측정된 43.3 g에 대해 43.2 g을 예측합니다(58.0 g 컬럼 용량에 대한 47.0 g 적재이므로, 충전상이 47.0 g 전부를 결합하고 0.92 회수 분율이 나머지를 합니다). 여기서는 매크로-F1이 원시 정확도보다 더 중요한데, 여섯 단계가 불균형하기 때문입니다 — 적재와 용출이 샘플 수를 지배하는 반면 스트립과 CIP는 짧습니다 — 그리고 매크로-평균은 모델이 다수 단계에 무임승차하도록 두기를 거부합니다. 거의 완벽한 점수는 부분적으로 주기-위치 특징이 단일하고 잘 분리된 주기에서 그토록 정보적이기 때문입니다. 실제 다중-주기, 다중-수지-로트 데이터셋에서는 점수가 더 낮을 것이고 분류기는 신호 모양에 더 기대야 할 것입니다 — 이것이 미해결 절이 여는 정직한 단서입니다.
하나의 풀링 결정의 해부
풀링 결정은 작습니다 — 시작, 정지, 풀 하나 — 그러나 그것은 포획 단계의 논리 전체를 나르므로, 하나를 항목별로 펼쳐 볼 가치가 있습니다. 아래 기록은 모듈이 PApool-001에 대해 내린 결정이며, 모든 항목은 실시간 신호이거나, 학습된/잠긴 규칙이거나, 물리에 닻을 내린 예측이며, 지어낸 것은 없습니다.
하나의 풀링 결정, 온전히 펼쳐진 것: 세 실시간 신호가 "Elution"이라 말하는 단계 분류기에 입력되고, 잠긴 UV 가드 밴드가 피크 에지에서 시작과 정지를 고르며, 물질수지 천장이 회수 가능한 질량을 한정하고, 학습된 분율이 수율을 예측한다 — 청징 수확물에서 포획 풀로 이어지는 계보가 단일한 검토 가능 기록에 실려 있다.
저자가 AI의 도움을 받아 직접 제작한 그림입니다.
위에서 아래로 읽으면, 그 기록은 축소판으로 담긴 이 장이며, 각 항목은 제자리를 벌어 냅니다:
- 주기 / 소스 —
PApool-001,protein_a_chromatogram.csv(3120-샘플 황금 주기)와protein_a_summary.csv(한 행짜리 결정)에서 가져옴. 이것이 계통(genealogy)이 앞으로 나르는 신원입니다. - 실시간 신호 — UV280(mAU), 전도도(mS/cm), 그리고 pH, 매 초 샘플링됨. 이것들은 결정이 내려지는 순간 가용한 유일한 입력입니다. 루프 안에 오프라인 분석은 없으며, 그것이 실시간 규칙의 온 요점입니다.
- 예측된 단계 — 그래디언트 부스팅 분류기의 판정
Elution, 그 0.9989 보류 정확도와 함께. 이 항목은 그 아래 모든 것을 게이트(gate)합니다. 가드 밴드는 용출 안에서만 적용되므로, 세척 중의 UV 융기는 결코 수집을 촉발하지 않습니다. - 규칙 (잠긴 차단값) — 100 mAU UV280 가드 밴드, 검증에서 고정되고 실시간으로 적응되지 않음.
pool_start15.0 CV는 상승 에지가 100 mAU를 처음 넘는 곳,pool_stop16.92 CV는 하강 에지가 그것을 마지막으로 넘는 곳입니다. 그 차이, 1 L 컬럼에서 1.92 CV가 1916.7 mL 풀입니다. - 물리 천장 — 물질수지.
column_capacity인 DBC 58 g/L × 1 L = 58.0 g에 대한mass_loaded47.0 g이므로,bound= min(47.0, 58.0) = 47.0 g: 충전상에 여유 공간이 있었고 주어진 모든 것을 포획했습니다. 어떤 학습도 이보다 더 많은 용출 질량을 주장할 수 없습니다. - 학습된 분율 —
recovery_frac0.92, 물리가 못 박지 못하는 유일한 양으로, 측정된measured43.3 g에 대해eluted_pred= 47.0 × 0.92 = 43.2 g을 줍니다. 물리 천장(47.0)과 예측(43.2) 사이의 간극이 바로 데이터가 공급해야 할 수지-와-조건 손실입니다. (이 공개된 단일-주기 데이터셋에서 0.92는 주기 요약에서 읽히므로, 43.2 대 43.3 일치는 항등 점검입니다. 다중-주기 데이터셋에 걸쳐서는 분율이 적합되고 그 예측은 보류된 소프트 센서가 됩니다.) - 계보 —
PApool-001derivedFromCLAR-001, 지난 장의 청징-수확물 입력이며, Book 4 계통(Book 4 genealogy)이 나르는 것과 같은 출처 에지입니다. - 거버넌스 — 차단값은 설계 시점에 잠기고 모델의 런타임 역할은 자율이 아니라 모니터링이며, 이는 초안 Annex 22와 일관됩니다.
기록 전체는 사후에 감사 가능합니다 — 모델이 고른 풀을 그것이 실제로 모은 것의 분석값과 항목별로 대조할 수 있습니다 — 바로 이것이 자율 컨트롤러는 통과하지 못할 곳에서 이 패턴이 GMP 검토를 통과하는 이유입니다. 이것은 Book 2의 데이터 포인트 수명주기(Book 2's data-point lifecycle)에서 온 여섯 항목짜리 자기기술(self-describing) 기록으로, 여기서는 실험실 분석값 대신 실시간 신호, 잠긴 규칙, 그리고 예측을 나릅니다 — 맥락화된 기록이 곧 감사의 단위입니다.
기록을 기계-점검 가능하게 만드는 것: 타이핑된 삼중항, SHACL 게이트, 그리고 걸어 다닐 수 있는 계보
위 카드는 사람이 읽는 요약이지만, 그 아래에서 같은 사실들은 타이핑된 삼중항(지식 그래프를 이루는 주어-술어-목적어 문장)이며, 그것이 심사자뿐 아니라 기계가 결정을 점검할 수 있게 합니다. 모든 항목은 Book 4가 세우는 온톨로지로 매핑됩니다. 세 실시간 채널은 단위를 나르는 데이터타입 속성(datatype properties)(bp:uv280, bp:conductivity, bp:pH로, 각각 UCUM 단위 코드를 나르므로 mAU와 mS/cm는 열 헤더 위의 맨 철자가 아니라 추론기가 관계 짓는 개념입니다)이고, PApool-001은 클래스 분류체계(class taxonomy)에서 온 bp:CapturePool이며, Elution은 자유 텍스트 문자열이 아니라 통제된 단계 용어 중 하나입니다. 그 보상은 풀링 모델이 입력을 열 이름이 아니라 IRI로 읽는다는 것입니다 — UV 채널은 이 주기의 bp:uv280 위의 값이므로, 이름이 바뀌거나 재정렬된 CSV 내보내기가 조용히 그것을 잘못 먹일 수 없습니다 — MLOps 장(MLOps chapter)이 모든 특징에 대해 하는 바로 그 부서지기-쉬움에서-견고함으로의 이동이고, 데이터 책의 시맨틱 상호운용성 장(data book's semantic-interoperability chapter)이 존재하여 공급하는 시스템-간 신원입니다.
그 신원은 또한 각 항목이 어느 공장 시스템에서 왔는지를 말해 주는데, 그래프가 공장 바닥이 이미 말하는 표준에 정박하기 때문입니다. 실시간 UV/전도도/pH 스트림은 OPC UA(벤더 중립 산업-데이터 전송)로 도착하고, 주기는 ISA-95 설비-및-물질 계층(IEC 62264 — 어느 컬럼이, 어느 스키드 위에서, 어느 캠페인에서인지를 말하는 모델)의 한 배치 단계이며, 주기 요약은 B2MML 배치 기록(ISA-95의 XML 직렬화)으로 교환 가능합니다. 그래서 데이터 엔지니어가 걱정하는 타임스탬프-정렬과 결측값 규칙은 임시방편이 아닙니다. 샘플은 그 OPC UA 소스 타임스탬프에 키가 잡히고, 누락된 1초는 행이 조용히 밀린 것이 아니라 그래프가 볼 수 있는 틈(gap)이며, 초당 한 번의 박자는 행 순서로부터의 추측이 아니라 설비 기록의 속성입니다.
닫힌-세계 점검이 짐을 지는 부분입니다. 이 주기의 기록이 풀링 모델을 훈련하거나 재검증하도록 허용되기 전에, 그것은 SHACL 셰이프(Shapes Constraint Language — 모든 필수 필드가 존재하고, 단수이며, 타이핑되고, 범위 안에 있어야 한다는 닫힌-세계 규칙)에 대해 검증됩니다 — 출하 게이트(release gate)가 로트의 출하 여부를 결정하는 데 쓰는 바로 그 규율입니다. SHACL이 답하는 질문 — 필수 결과가 빠졌는가? — 은 어떤 SELECT 질의도 던질 수 없는데, 그것은 존재해야 하는데 존재하지 않는 삼중항에 관한 것이기 때문입니다. 출하 로트가 아니라 훈련 행에 겨누면, 그 셰이프는 모든 주기가 단 한 번의 적합 전에 그 UV 자취, 적재 질량, 측정된 회수율, 그리고 계보 가장자리를 나른다는 것을 보장하므로, 반쯤 지어진 기록은 교차검증 세 번째 폴드에서 발견되는 대신 게이트에서 거부됩니다. 그리고 계보 항목은 장식이 아닙니다. PApool-001 bp:derivedFrom CLAR-001은 PROV-O 출처 가장자리(계보 장(genealogy chapter)이 디지털 스레드를 세우는 W3C 출처 어휘로, OBO 관계 온톨로지의 derives from에 정렬됨)이고, 그 추이적 가장자리가 바로 아래의 보류-하나-주기(leave-one-cycle-out) 검증이 필요로 하는 묶음 키입니다 — 주기 전체(와 수지 로트 전체) 그룹은 우연한 cycle_id 열을 믿는 대신 계보 IRI를 SPARQL 순회로 걸어 다녀 정의됩니다. BFO 연속체/발생체 절단이 마지막 조각을 정직하게 지킵니다. 회수-질량 측정(풀의 연속체 품질)은 그것을 만든 포획 주기(발생체)와 다른 종류의 개체이므로, 소프트 센서는 그 숫자를 그것을 만든 운전과 결코 혼동하지 않습니다.
한 계층이 그 기록을 단지 깔끔할 뿐 아니라 법적으로 충분하게 만듭니다. 풀링 결정이 CQA에 닿는 작업을 조종할 수 있기에, 그것은 규제되는 전자 기록입니다. 모든 항목은 ALCOA+(Attributable 귀속 가능, Legible 가독적, Contemporaneous 동시적, Original 원본, Accurate 정확 — 더하기 Complete 완전, Consistent 일관, Enduring 지속, Available 가용)를 충족해야 하며 — 차단값을 고른 잠긴 모델 버전에 귀속 가능하고, 각 샘플이 스트리밍되는 대로 시각이 찍히므로 동시적이며, 위의 SHACL 게이트가 필드 빠진 기록을 거부하므로 완전합니다 — 그리고 잠긴 차단값, 모델 버전, 그리고 처분(disposition)은 21 CFR Part 11(미국)과 EU GMP Annex 11(유럽)이 전자 기록과 서명에 요구하는 귀속 가능한 전자서명과 불변 감사추적을 나릅니다. 승인 필드 위의 sh:minCount 1은 "서명되지 않은 출하는 출하가 아니다"의 SHACL 철자이므로, 온톨로지 의무와 Part 11 의무는 두 계층에 있는 같은 의무입니다 — 바로 이것이 이렇게 모은 풀링 기록이 조사관 앞에서 허용 가능하고, 같은 숫자의 스프레드시트 내보내기는 그렇지 못한 이유입니다.
미해결 과제: 용량 표류, 수지 수명, 그리고 잠긴-모델 역설
포획에서 어렵고 미해결된 문제는 시간(time) 입니다 — 구체적으로, 주기 1의 컬럼과 주기 200의 컬럼이 같은 컬럼이 아니라는 것입니다. 단백질 A 수지는 값비싸고 유한한 주기 수명에 대해 검증됩니다. 그 수명에 걸쳐 동적 결합 용량이 천천히 떨어지고, 배압(back-pressure)이 오르며(충전상이 오염되고 다져지면서 흐름에 더 저항하므로 액체를 밀어 넣는 데 더 많은 압력이 듦), 파과 전선이 번지고, 그 불순물 제거 능력이 표류할 수 있습니다. 오늘 풀의 타이밍을 완벽하게 잡는 모델은, 동결되면, 수지가 노화하고 피크 모양이 이동하면서 천천히 그것을 잘못 잡을 것입니다 — 용출 피크가 넓어지고 어깨가 생기며, 100 mAU 교차점이 움직이고, 고정된 가드 밴드가 잘라내거나 과수집하기 시작합니다. 이것이 이 책이 거듭 만나는 모델 쇠퇴(model decay) 문제로, 여기서는 표류하는 생물학적 공정이 아니라 닳아 가는 물리적 자산에 의해 구동되며, 이는 그것을 더 예측 가능하게(노화는 단조롭습니다) 그리고 더 피할 수 없게(수지를 리셋할 수 없습니다) 만듭니다.
이것은 규제 현실과 정면으로 충돌하며, 그 충돌이 진정으로 미해결된 부분입니다. 데이터 과학자가 원하는 바로 그 해법 — 모델이 노화하는 수지에 적응하여 주기마다 차단값을 살짝 밀게 두는 것 — 이 바로 초안 Annex 22가 핵심 GMP 기능에 대해 가장 명시적으로 금지하는 것입니다. 그것은 온라인 적응이 아니라 잠긴 결정론적 모델과 미리 정해진 변경 관리 계획을 요구합니다. 그래서 이 분야는 아무도 규모에서 완전히 풀지 못한 어색한 중간 지대에 남겨졌습니다. 표류를 검출(detect)하되(수지 노화 모니터 — 크로마토그래피 특징에 대한 PCA, 하이브리드 집중-동역학 노화 모델, 모멘트 분석 — 이 여기에 능합니다), 모델이 자기 풀링 규칙을 조용히 다시 쓰는 것이 아니라 통제된 재훈련(governed retraining)과 검증된 세정/재평형화 주기를 통해 그것에 대응(respond)하는 것입니다. 그것을 잘 한다는 것은 세 가지 열린 질문에 답하는 것을 뜻합니다. 모델이 통제된 재훈련을 정당화할 만큼 언제 충분히 쇠퇴했는가(그 자체가 검증된 산출물인 표류-검출 임계). 재훈련된 모델이 그것이 대체하는 잠긴 모델만큼 적어도 안전함을 어떻게 증명하는가(동등성 논증). 그리고 누가 승인하는가 — 수지에 남은 주기보다 더 오래 걸릴 수 있는 변경 관리 루프. 이것이 하류의 열린 MLOps 문제(MLOps problem)이며, 규모에서 진정으로 미해결입니다.
두 번째 미해결 조각은 우리 자신의 데모가 드러낸 것입니다. 단계 분류기는 주기 위치에 크게 기댔고, 단일한 깨끗한 주기가 그것을 사소하게 쉽게 만들었습니다. 실제 포획 데이터는 다중-주기, 다중-수지-로트, 다중-규모이며, 단계 검출의 진정으로 어려운 버전 — 채널링하는 컬럼, 규격을 벗어난 공급물, 더듬거리는 펌프, 일시정지되었다 재개되어 부피 시계가 더 이상 자취 모양과 정렬되지 않는 주기에 견고한 — 은 한 황금 운전에서의 0.9989 정확도가 시사하는 것보다 훨씬 어렵습니다. 신호를 학습하는 것을 시계를 학습하는 것과 구별하는 것이, 오염된 컬럼으로 일반화하는 분류기와 일정을 암기했다가 일정이 미끄러지는 순간 실패하는 분류기 사이의 차이입니다. 같은 데모에 더 미묘한 누설이 있습니다. 이동-창 특징이 분할 이전에 자취 전체에 걸쳐 계산되므로, 모든 보류 샘플이 자기 30초 창을 최대 스물아홉 개의 훈련 샘플과 공유합니다 — 무작위 분할은 특징 수준에서조차 깨끗하지 않으며, 이는 데이터 장이 제시하는 특징-누설과 그룹-분할 규율(feature-leakage and grouped-split discipline the data chapter sets out)입니다. (그 공유가 "부정행위(cheating)"인 까닭은 시험 샘플은 진정으로 본 적 없어야 하기 때문입니다. 그것이 훈련 이웃과 함께 평균되었다면, 모델은 사실상 이미 그것을 만난 셈입니다.) 따라서 정직한 검증은 한 주기 안의 무작위 샘플이 아니라 주기 전체(와 수지 로트 전체)를 보류하고 — 층화 분할(같은 주기의 샘플을 훈련과 시험 양쪽에 흩뿌림)이 아니라 한-주기-제외(leave-one-cycle-out, 한 주기 전체의 모든 샘플을 시험 집합으로 떼어 둠) — 어떤 시험 샘플도 훈련 이웃에게서 맥락을 빌리지 않도록 각 폴드 안에서 창 특징을 다시 계산합니다. 그 프로토콜에서의 점수가 실제로 공장 거동을 예측할 숫자입니다.
이 장이 모델 모음에 더하는 것
이 장은 Book 5의 예제 모음에 examples/platform/ml/chromatography.py 를 기여합니다 — 단백질 A 단계 분류기 더하기 풀링-과-회수 모델입니다. 그것은 다음을 제공합니다:
train_phase_classifier()— UV280, 전도도, pH, 그리고 시간 맥락(주기 위치, 30초 이동 기울기와 평균)에 대한 그래디언트 부스팅 6클래스 단계 분류기로, 실제 크로마토그램의 70/30 층화 보류 분할에서 검증됨(정확도 0.9989, 매크로-F1 0.9989; 2184 훈련 / 936 시험 샘플).predict_pool()— 실시간 풀링 규칙: 모델이 예측한 용출 단계 안에서 적용된 잠긴 100 mAU UV 가드 밴드로, 주기 요약과 일치하는 시작/정지 컬럼 부피(15.0–16.92 CV)와 풀 부피(1916.7 mL)를 반환함.recovery_model()— 물질수지에 닻을 내린 회수율 소프트 센서: 물리 천장(적재 질량과 DBC 곱하기 컬럼 부피 중 더 작은 것, 58.0 g 용량 중 47.0 g) 곱하기 학습된 회수 분율(0.92)로, 측정된 43.3 g에 대해 43.2 g을 예측함.
그것은 examples/datasets/protein_a_chromatogram.csv(3120개 초당 샘플)와 protein_a_summary.csv(주기의 풀링 결정과 회수)를 읽으며, 회귀와 나란히 범주형(단계) 과제를 가진 하류 단위 작업 위에서 작동함으로써 상류 소프트 센서 — soft_sensor_pls.py와 hybrid_model.py — 를 의도적으로 복제하지 않고 보완합니다.
왜 중요한가
포획은 정제 열차 전체의 불순물 바닥을 정하며, 그것이 내리는 풀링 결정 — 움직이는 신호 위에서, 실시간으로 — 은 제조에서 모델의 선택이 제품 품질과 수율에 즉각적이고, 측정 가능하며, 감사 가능한 결과를 갖는 몇 안 되는 곳 중 하나입니다. 학습 층을 옳게 하는 것은 세 가지 구체적인 것을 뜻합니다. 사람이 모든 자취가 아니라 예외를 검토하도록 크로마토그램 검토를 자동화하는 단계 분류기. 고정된 과거 창이 아니라 근거 위에서 수율과 순도를 맞바꾸는, 학습되고 검증되었으나 잠긴 풀링 규칙. 그리고 분석값이 알려 주기 전에 운전자에게 수율을 말해 주는 회수율 소프트 센서. 경계를 옳게 하면 — 컬럼에는 기계론적 물리, 읽고-예측하는 시점에는 기계학습, 어느 쪽도 다른 쪽인 척하지 않음 — 포획은 하류 ML의 모범 시민이 됩니다. 실재하고, 배포에 인접하며, 그 한계에 대해 정직한. 경계를 흐리거나, 풀린-물리 시뮬레이터를 "AI"라 부르거나, 모델이 자기 CQA-영향 규칙을 적응하게 두면, 당신은 과장했거나 규제 당국이 가장 밝게 그어 놓은 선을 넘은 것입니다. 황금 주기 BATCH-2026-001은 바로 그 규율의 힘으로 이 단계를 통과해 98.611%의 단량체(monomer)(단일하고 올바르게 접힌 항체 — 고분자량 응집체 덩어리와 대비되는 바람직한 형태)를 나릅니다.
실제 현장에서는
기계론적 크로마토그래피 모델링은 CMC 공정 개발에서 상용(production) 기술입니다. Cytiva GoSilico와 오픈소스 CADET이 실제 분자의 용출과 파과를 모델링하는 데 쓰이고, 공개된 산업 그룹들은 자기 파이프라인에 기계론적 이온교환 및 혼합모드 모델을 만들었습니다 [1][2] — 성숙도: 상용, 그러나, 다시 말하지만, 이것은 ML이 아니라 기계론적이며 벤더 절감 표제는 벤더 자체보고입니다. 학습 측면에서, 배포에 인접한 현실은 자율 제어가 아니라 모니터링과 예측이며, 그것은 성숙도별로 깔끔하게 분류됩니다:
- 파일럿, 이름 붙은 배포. ML 기반 라만이 단백질 A 포획 중 인라인으로 16개 품질 속성을 예측하는 데 쓰였습니다 — Boehringer Ingelheim의 파일럿(후기 단계 하류 공정 개발, Karlsruhe Institute of Technology와 함께)으로, Butterworth 필터링된 스펙트럼 위에서 k-최근접이웃(k-nearest-neighbours) 회귀기를 쓰며 명시적으로 심층학습 모델이 아니라는 점은 잘못 인용되는 어디서든 바로잡을 가치가 있습니다 [8].
- 파일럿. 온라인 PAT 더하기 PCA가 수율 손실보다 20–25 주기 앞서 단백질 A 수지 노화를 표시했습니다 [6].
- 연구. PINN-가속 기계론적 모델이 연속 4C-PCC 포획의 모델 예측 제어를 위해 실시간 속도(오프라인 적합 2608.6초에서 110.7초로, 온라인 12에서 14초로)에 도달했고 [5], CNN-안내 라만이 CEX 연마 단계에서 R제곱 0.94에서 0.99로 전하변이 풀링 결정을 내렸습니다(위에서 논의한 연마 결과).
이 패턴은 책 전체가 보고하는 ISPE Pharma 4.0 그림(ISPE Pharma 4.0 picture)과 일치합니다. 하류 ML은 핵심 품질 속성의 자율 제어가 아니라 모니터링, 예측, 그리고 인간-개입(human-in-the-loop) 검토에 모입니다. 오픈소스 분석 장(open-source analytics chapter)은 코드로 돌아가는 같은 모양의 모델을 보여 주고, Book 1의 포획 크로마토그래피(Book 1's capture chromatography)와 Book 4의 하류 온톨로지(Book 4's downstream ontology)는 같은 물리적 단계를 자기 렌즈로 기술합니다.
핵심 용어
- 포획(단백질 A) 크로마토그래피(Capture (Protein A) chromatography) — 첫 번째 하류 단계, 대부분의 불순물을 제거하고 항체를 여러 배로 농축하여 포획 풀
PApool-001을 산출하는 결합-용출 주기. - 단계(Phase) — 포획 주기의 여섯 분절(평형화, 적재, 세척, 용출, 스트립, CIP) 중 하나로, 각각 또렷한 UV-전도도-pH 시그니처를 가지며, 실시간 신호로부터 샘플별로 분류됨.
- 파과(Breakthrough) — 적재 중 수지가 포화되면 항체가 결합하지 못한 채 컬럼을 빠져나가는 것. 그것을 표시하는 상승하는 출구 UV S자 곡선이 얼마나 적재할 수 있는지를 한정함.
- 동적 결합 용량(Dynamic binding capacity, DBC) — 고정된 파과 수준(흔히 10%, DBC10) 전에 운전 유속에서 컬럼이 붙잡을 수 있는 질량. 상수가 아니며 — 수지가 노화하면서 떨어지고 유속, 온도, 역가에 따라 이동함.
- 일반속도모델(General rate model, GRM) — 제일원리 컬럼 PDE 계: 벌크에서의 대류-분산, 비드 안으로의 필름 전달과 공극 확산을, 결합 등온선으로 닫음. 기계론적 크로마토그래피 시뮬레이션의 골격.
- 입체질량작용(Steric mass action, SMA) — 단백질이 특성 전하와 입체 차폐 아래에서 결합 자리를 두고 염 짝이온과 경쟁하는 이온교환 등온선. GoSilico와 CADET에서 GRM과 짝지어짐.
- 풀링 결정(Pooling decision) — 용출액 수집의 시작과 정지를, 보통 UV280(그리고 때로 전도도 또는 pH) 위의 가드 밴드로 고르며 회수율과 순도를 맞바꾸는 것. 상용에서 차단값은 학습되고 검증되었으나 잠겨 있고, 실시간으로 적응되지 않음.
- 기계론적 크로마토그래피 모델(Mechanistic chromatography model) — 제일원리 컬럼 시뮬레이터(GRM + SMA; GoSilico, CADET). 여기서 성숙한 상용 도구이며 기계학습이 아님.
- 하이브리드(회색상자) 크로마토그래피 모델(Hybrid (gray-box) chromatography model) — 측정하기 어려운 매개변수(직렬)나 잔차(병렬)를 학습된 구성요소가 공급하는 기계론적 골격. 소량-데이터 친화적인 중간 경로.
- 회수율 소프트 센서(Recovery soft sensor) — 물리 천장(적재 질량과 DBC 곱하기 컬럼 부피 중 더 작은 것) 곱하기 학습된 회수 분율로부터 용출 질량을 예측하는 것.
- IRI로 본 특징(Feature by IRI) — 풀링 모델의 입력을 부서지기 쉬운 열 이름이 아니라 시맨틱하게 식별되고 단위를 나르는 양(
bp:uv280등, UCUM 단위와 BFO 타이핑과 함께)에 배선하고, 공장 시스템이 이미 말하는 ISA-95 / OPC UA / B2MML 표준에 정박하여, 이름이 바뀌거나 재정렬된 내보내기가 조용히 그것을 잘못 먹일 수 없게 함. - SHACL로 검증된 훈련 기록(SHACL-validated training record) — 주기의 기록이 풀링 모델을 훈련하거나 재검증하기 전에, 출하를 게이트하는 바로 그 닫힌-세계 셰이프(
bp:ReleaseShape: 모든 필수 필드가 존재하고, 단수이며, 타이핑되고, 범위 안에 있어야 함)를 돌려, 반쯤 지어진 기록이 교차검증 세 번째 폴드에서 발견되는 대신 게이트에서 거부되게 함. bp:derivedFrom/ PROV-O 계보(bp:derivedFrom/ PROV-O lineage) — 디지털 스레드가 나르는 추이적 출처 가장자리(PApool-001 derivedFrom CLAR-001, OBO 관계 온톨로지의 derives from에 정렬됨); 보류-하나-주기 검증을 정직하게 만드는 묶음 키로,cycle_id열을 믿는 대신 SPARQL 순회로 걸어 다녀짐.- ALCOA+ / 21 CFR Part 11 / EU Annex 11 — CQA에 닿는 풀링 기록이 충족해야 하는 데이터 무결성 표준과 전자-기록-및-서명 규칙: 귀속 가능한 모델 버전, 동시적 타임스탬프, 완전한(SHACL-게이트된) 기록, 그리고 서명된 처분을 동반한 불변 감사추적.
다음 이야기
포획 풀 PApool-001은 농축되고, 저-pH이며, 수확물보다 훨씬 순수합니다 — 그러나 "훨씬 순수함"은 "안전함"이 아닙니다. 제품이 전진하기 전에, 공정은 검증된 여유로 바이러스를 제거할 수 있음을 증명해야 하고, 그 증명은 단단한 바닥을 가진 숫자입니다. 다음 장 바이러스 안전성: 로그 감소와 직교 제거의 학습(Viral Safety: Learning Log-Reduction and Orthogonal Clearance)은 로그-감소-값 문제를 다룹니다 — 학습이 직교 단계들에 걸쳐 바이러스 제거를 어떻게 예측하고 뒷받침하는지, 그리고 왜 이곳이 모델이 주장하도록 허용된 것에 대해 조심해야 할, 책 전체에서 가장 안전이 결정적인 곳인지.