> job detail
O
👽Other
Machine Learning Engineer
Opswat · Ho Chi Minh City, Ho Chi Minh City, Vietnam
// classified as
Other (Adjacent or hard to classify.)
posted
1d ago
location
Ho Chi Minh City, Ho Chi Minh City, Vietnam
languages
python, rust
tools
—
> stack
pythonrust
> description
<div class="content-intro"><p><span class="acronym-highlight">OPSWAT</span>, a global leader in IT, <span class="acronym-highlight">OT</span>, and <span class="acronym-highlight">ICS</span> critical infrastructure cybersecurity, delivers an end-to-end platform that gives public and private sector organizations and enterprises the critical advantage needed to protect their complex networks, secure their devices, and ensure compliance. Over the last 20 years our commitment to innovative technology has earned the trust of more than 1,700 organizations, governments, and institutions globally, solidifying our role in protecting the world’s critical infrastructure and securing our way of life.</p></div><p><strong>The Position</strong></p>
<p><strong>MetaDefender Core</strong> is OPSWAT's file security platform, trusted where the stakes are highest: nuclear plants, defense networks, and the banks that move the world's money. The most sensitive of those customers cannot send a single byte to anyone's cloud, so the AI must run entirely on their hardware, inside the product. </p>
<p>This role is for the engineer who would rather own a model than call someone else: you build the training data, the fine-tuning, the evaluation, and you make the call on what ships. Every AI assistant you have ever used lives in a data center; yours will run on the customer's own hardware, inside some of the most protected networks in the world. </p>
<p><strong><span data-contrast="auto">What You Will be Doing</span></strong><span data-ccp-props="{}"> </span></p>
<ul>
<li><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Own the model track end to end: training data, fine-tuning runs, evaluation, and release, with scope and ownership growing by level.</span></span><span data-ccp-props="{}"> </span></li>
<li><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Build and </span><span data-ccp-parastyle="List Bullet">maintain</span><span data-ccp-parastyle="List Bullet"> the evaluation gate for every model </span><span data-ccp-parastyle="List Bullet">to change</span><span data-ccp-parastyle="List Bullet"> and</span><span data-ccp-parastyle="List Bullet"> make it something the team trusts more than its own intuition.</span></span><span data-ccp-props="{}"> </span></li>
<li><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Build the data pipelines that produce training datasets, enforcing grounding so the model can only state what it has actually read.</span></span><span data-ccp-props="{}"> </span></li>
<li><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Shape how the agent behaves: its instructions, its tool contracts, and how it recovers when the model gets something wrong.</span></span><span data-ccp-props="{}"> </span></li>
<li><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Own the model's security posture: harden it against prompt injection and misuse, make sure it never exposes internal information, and never lets itself be steered into guiding users toward unsafe actions.</span></span><span data-ccp-props="{}"> </span></li>
<li><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Serve models on constrained customer hardware: quantization, inference runtimes, and the memory / latency / quality trade-off.</span></span><span data-ccp-props="{}"> </span></li>
<li><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Ship into a production Rust service, collaborating closely with the engineering team, Product Management, and QA.</span></span><span data-ccp-props="{}"> </span></li>
</ul>
<p><strong><span data-contrast="auto">What We Need from You</span></strong><span data-ccp-props="{}"> </span></p>
<ul>
<li><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Bachelor's degree in a technical field or equivalent practical experience.</span></span><span data-ccp-props="{}"> </span></li>
<li><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Experience fine-tuning open-weight LLMs (</span><span data-ccp-parastyle="List Bullet">LoRA</span><span data-ccp-parastyle="List Bullet">/</span><span data-ccp-parastyle="List Bullet">QLoRA</span><span data-ccp-parastyle="List Bullet"> or similar).</span></span><span data-ccp-props="{}"> </span></li>
<li><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Strong Python, including building data pipelines for training datasets.</span></span><span data-ccp-props="{}"> </span></li>
<li><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Experience keeping model output grounded: retrieval-backed generation, hallucination control, and output traceable to a source the model </span><span data-ccp-parastyle="List Bullet">reads</span><span data-ccp-parastyle="List Bullet">.</span></span><span data-ccp-props="{}"> </span></li>
<li><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Experience with LLM serving and inference (</span><span data-ccp-parastyle="List Bullet">e.g.</span><span data-ccp-parastyle="List Bullet"> </span><span data-ccp-parastyle="List Bullet">vLLM</span><span data-ccp-parastyle="List Bullet">, </span><span data-ccp-parastyle="List Bullet">Ollama</span><span data-ccp-parastyle="List Bullet">), including quantization and the memory / latency / quality trade-off on constrained hardware.</span></span><span data-ccp-props="{}"> </span></li>
<li><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Familiarity with tool-calling / agent-based LLM applications.</span></span><span data-ccp-props="{}"> </span></li>
<li><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Ability to design and run model evaluations for non-deterministic systems: you can name a metric you designed and the number you moved.</span></span><span data-ccp-props="{}"> </span></li>
<li><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Working knowledge of SQL.</span></span><span data-ccp-props="{}"> </span></li>
<li><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Strong verbal and written communication skills in English: the language of the team, the docs, and the prompts.</span></span><span data-ccp-props="{}"> </span></li>
<li><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Self-motivated, adaptable, and comfortable owning a track in a fast-paced, team-oriented environment.</span></span><span data-ccp-props="{}"> </span></li>
</ul>
<p><strong><span data-contrast="auto">It Would be Nice if You Had</span></strong><span data-ccp-props="{}"> </span></p>
<ul>
<li><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Rust literacy (able to read and </span><span data-ccp-parastyle="List Bullet">modify</span><span data-ccp-parastyle="List Bullet"> existing service code).</span></span><span data-ccp-props="{}"> </span></li>
<li><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Experience with agent frameworks (</span><span data-ccp-parastyle="List Bullet">e.g.</span><span data-ccp-parastyle="List Bullet"> ADK-style).</span></span><span data-ccp-props="{}"> </span></li>
<li><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Awareness of LLM security risks: prompt injection, data leakage, misuse.</span></span><span data-ccp-props="{}"> </span></li>
<li><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Compact models deployed on-premises, offline, </span><span data-ccp-parastyle="List Bullet">or</span><span data-ccp-parastyle="List Bullet"> resource-constrained environments.</span></span><span data-ccp-props="{}"> </span></li>
<li><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Evaluation tooling for LLM systems: LLM-as-judge, regression suites, human review loops.</span></span><span data-ccp-props="{}"> </span></li>
<li><span data-contrast="auto"><span data-ccp-parastyle="List Bullet">Cybersecurity concepts, or experience building components of a security product.</span></span><span data-ccp-props="{}"> </span></li>
</ul><div class="content-conclusion"><p>OPSWAT is an equal opportunity employer. We celebrate diversity and are committed to providing an environment where equal employment opportunities are extended to all employees and applicants, free of discrimination and harassment of any type. All employment decisions are based on individual qualifications, job requirements, and business needs without regard to race, color, religion, age, sex, national origin, disability status, genetics, protected veteran status, sexual orientation, gender identity or expression, or any other category protected by federal, state, or local laws.</p>
<p>Recruiting Agencies: we do not accept unsolicited resumes from third party agencies for any of our open positions. To submit resumes for our jobs, there must be a recruiting contract approved by our legal team and endorsed by both parties. We are currently not accepting additional 3rd party agencies at this time.</p>
<p> </p></div>