มีรูปแบบหนึ่งโผล่ขึ้นในอีเมลสนับสนุนที่ฉันไม่คาดว่าจะได้ส่ง

"ฉันเริ่ม inference run ยาวด้วย Ollama ปิด MacBook แล้วเดินออกไป กลับมาสองชั่วโมงต่อมา chat สร้างได้แค่ 80 tokens และ Timex ไม่แสดงอะไรในช่องว่างนั้น"

Mac หลับแล้ว LLM ในเครื่องหลับไปด้วย Timex ก็หลับด้วย สามสิ่งหยุดพร้อมกัน และมีแค่อันเดียวที่ควรหยุด

ถ้าคุณรันอะไรก็ตามที่ต้องทำงานต่อขณะปิดฝา — Ollama, LM Studio, MLX, การถอดเสียง Whisper ยาว ๆ การ render ข้ามคืน การสำรอง Time Machine การ build Docker, SSH tunnel — คุณเจอเรื่องนี้แล้ว นี่คือสิ่งที่เกิดขึ้นจริง ๆ และวิธีที่สะอาดที่สุดในการแก้โดยไม่ต้องซื้อแอปแถบเมนูเพิ่ม

macOS ทำอะไรเมื่อคุณปิดฝา

โดยค่าเริ่มต้น macOS ปฏิบัติต่อฝาที่ปิดเป็นสัญญาณ suspend จอดับ ตัวจัดตาราง CPU จอด วิทยุลดเป็นโหมด low-power แล็ปท็อปของคุณตอนนี้ใช้น้อยกว่าหนึ่งวัตต์แทนสิบห้า แบตเตอรี่ขอบคุณคุณ inference run ของคุณไม่

ข้อยกเว้นคือ "clamshell mode" อย่างเป็นทางการของ Apple: ถ้า Mac เชื่อมต่อกับ ไฟภายนอก จอแสดงผลภายนอก และ คีย์บอร์ดหรือเมาส์ภายนอก macOS จะให้ทุกอย่างตื่นอยู่เมื่อปิดฝา นั่นคือเส้นทางที่รองรับ

เส้นทางไม่รองรับ-แต่ใช้ได้คือถือ power assertion ที่ป้องกัน idle sleep macOS เปิดเผยเป็น CLI สาธารณะ:

caffeinate -dimsu

flag พูดว่า: ป้องกันการหลับของจอ (-d), idle sleep (-i), system sleep (-s), และตื่นแม้บนแบต (-u) รันใน terminal แล้ว Mac จะไม่หลับจนกว่าคุณกด Ctrl-C ไม่ว่าจะปิดฝาหรือไม่ ไม่มี GUI ไม่มีตัวบ่งชี้บนแถบเมนู ไม่มีหยุดอัตโนมัติหลังจาก job เสร็จ — นั่นคือสิ่งที่ทำให้มันเปราะในทางปฏิบัติ

ทำไมมันสำคัญสำหรับ LLM ในเครื่องโดยเฉพาะ

เมื่อ Mac หลับ context ของ GPU และ Neural Engine ที่ Ollama / LM Studio / MLX ใช้อยู่จะถูกย้ายออก token ถัดไปไม่มาภายใน 30 ms — มันมาเมื่อคุณเปิดฝาอีกครั้ง แย่กว่านั้น ในการ config บางอย่าง context ของ Metal ถูก invalidate และต้องโหลดโมเดลใหม่จากดิสก์ ซึ่งอาจ 10–30 วินาทีสำหรับโมเดลคลาส 70B

ส่วนที่น่าหงุดหงิดคือนี่ไม่ใช่ปัญหา "Mac ของคุณช้าเกินไป" Mac ปกติดี มันทำงานภายใต้นโยบายพลังงานที่ออกแบบมาเพื่อพิมพ์อีเมลบนเครื่องบิน ไม่ใช่ inference แบบไม่มีคนดู

ส่วนที่น่าหงุดหงิดอีกอย่าง: แอป "stay awake" ส่วนใหญ่ถูกเขียนก่อน LLM ในเครื่องจะแพร่หลาย และมันถือว่าการป้องกันการหลับเป็น toggle ทั่วโลก ถ้าไม่ปลุก Mac ตลอดไป ก็ต้องจำปิด ไม่มีโหมด "ปลุกจนกว่า run นี้จะเสร็จ"

การตั้งค่าที่ใช้ได้จริง

1. จอภายนอก + ไฟ + USB peripheral นี่คือโหมด clamshell ที่ Apple รองรับ ทำงานเลย ข้อเสียคือต้องมีฮาร์ดแวร์และพื้นที่โต๊ะ ถ้าคุณอยู่บนถนน นี่ไม่ใช่คำตอบ

2. โหมดปิดฝาด้วย caffeinate(1) CLI ทำงาน แต่ต้องจำเริ่มก่อนปิดฝาและหยุดหลังจาก Mac จะรันที่ full power ทั้งคืนบนแบตอย่างมีความสุขถ้าคุณลืม ถามฉันสิว่ารู้ยังไง

3. โหมดปิดฝาด้วย pmset noidle ผลเหมือนกับ caffeinate การเรียกต่างกันนิดหน่อย โหมดล้มเหลวจากการลืมเหมือนกัน

4. แอป wake-keeper บนแถบเมนู Amphetamine, Lungo, KeepingYouAwake — ทั้งหมดห่อกลไก kernel เดียวกัน ตัวดี ๆ เพิ่ม max duration และ trigger "จนกว่าแอปนี้จะ quit" ตัวแย่กลายเป็น adware เลือกอย่างระมัดระวัง

5. โหมด Stay Awake ใน Timex นี่คือตัวที่ฉันส่งจริงเพื่อแก้ปัญหาตัวเอง toggle จากแถบเมนู Mac อยู่ตื่นจนกว่าคุณจะ toggle ปิด มีแคปซูล amber ชัดเจนในแถบเมนูเพื่อไม่ให้ลืม และ max duration ที่กำหนดได้ (60 / 120 / 240 นาที) เพื่อถ้าคุณลืม Mac จะหลับก่อนเช้า

ฉันลำเอียง เลือกที่เข้ากับคุณ ประเด็นคือ: อย่ารัน job LLM ยาวด้วยพฤติกรรมปิดฝาดีฟอลต์และความหวัง

walkthrough ที่จบด้วย run เสร็จ

สมมติคุณอยากปรับโมเดลเล็ก ๆ ข้ามคืน หรือรัน batch ของการประเมินยาว ๆ บนไฟ AC ปิดฝา

# 1. เสียบ AC บนแบต + ปิดฝา macOS บังคับหลับ
#    ไม่ว่าแอปไหน — เป็นข้อจำกัด kernel

# 2. เริ่ม inference job ใน tmux เพื่อให้รอดการตัดการเชื่อมต่อ terminal
tmux new -s eval
ollama run llama3:70b < eval-prompts.txt > eval-output.txt
# Detach ด้วย Ctrl-b d

# 3. เปิด Timex Stay Awake (Settings → Stay awake, หรือ
#    popover แถบเมนู) toggle คงอยู่ระหว่างเปิดแอป

# 4. ปิดฝา เดินไป กลับมาตอนเช้า

Mac ตื่น วิทยุเปิดถ้าคุณต้องการ context ของ Neural Engine โหลดอยู่ Timex บันทึก session ทั้งหมด — เมื่อเปิดฝาอีกครั้ง คุณเห็นได้ว่า output แต่ละชิ้นสร้างเมื่อไหร่

แล้วตัวจับเวลาพักล่ะ?

คำถามนี้มักตามมา: "ถ้าโหมด Stay Awake ทำให้ Mac ตื่น และตัวจับเวลาพักดังทุก 25 นาที ฉันจะกลับมาเจอ notification stack 200 banner ลึกไหม?"

ไม่ macOS รวม banner เมื่อจอดับมาสักพัก คุณจะเห็นอันล่าสุดเมื่อเปิดฝา ไม่ใช่ทั้งหมด และตัวจับเวลาพักเคารพ idle gate เดียวกับการติดตาม — เมื่อไม่มี input 120 วินาที นาฬิกาพักก็พักด้วย รัน eval 6 ชั่วโมงโดยไม่มี input คุณไม่ได้ 14 notification คุณได้หนึ่ง เมื่อกลับมา กรอบบล็อกที่ทำงานล่าสุด

ข้อแม้ "แต่แบตของฉัน"

โหมด Stay Awake ไม่ฟรี CPU ตื่น วิทยุเปิด SSD หมุน โมเดล 70B ทำ inference ที่ Metal เต็มจะดึง 30–50 W บนแบต คุณจะได้ 90 นาที อาจสองชั่วโมง ก่อนแล็ปท็อปตาย

อะไรที่นานกว่าหนึ่งชั่วโมง เสียบไฟ "Optimized Battery Charging" ของ Apple จะรักษาแบตให้แข็งแรงแม้ที่ 100% ข้ามคืน ดังนั้นต้นทุนของการเสียบสำหรับ run ยาวเท่ากับศูนย์โดยพื้นฐาน

ข้อแม้อีกอย่าง: ความร้อน ฝาที่ปิดกักความร้อนไว้กับคีย์บอร์ด Mac Apple Silicon สมัยใหม่เป็น thermal performer ที่ยอดเยี่ยม แต่ก็ยังออกแบบเพื่อระบายความร้อนผ่านพื้นผิวคีย์บอร์ด ถ้าคุณรัน job หนักในโหมด clamshell หลายชั่วโมงบนพื้นผิวอ่อน (โซฟา เตียง ตัก) ตัวเครื่องจะถึง thermal throttling และ token-per-second จะลดครึ่ง วางบนโต๊ะ เอียงข้างถ้าจำเป็น

นี่ไม่ใช่อะไร

มันไม่ใช่วิธีหลีกเลี่ยงการต้องการ headless compute จริง ๆ ถ้าคุณรัน inference 24/7 สำหรับ traffic production คำตอบคือ Mac mini วางบนชั้นด้วย pmset -a sleep 0 set และแล็ปท็อปของคุณไม่อยู่ในภาพ โหมด Stay Awake บน MacBook คือกรณีที่คุณอยากทำงานพรุ่งนี้ด้วยเครื่องเดียวกัน แต่ก็อยากให้มันบดงานคืนนี้โดยไม่ต้องคุณนั่งมอง

มันก็ไม่ใช่ "trick เพื่อทำให้นโยบายการหลับของ Apple หายไป" นโยบายการหลับถูกต้องสำหรับแล็ปท็อปในปี 2026 อายุแบตเตอรี่คือฟีเจอร์เด่น เรากำลังเลือก opt out สำหรับงานคลาสเฉพาะหนึ่งที่ทำงานยาว ใช้ toggle เมื่อต้องการ ปิดเมื่อไม่ต้องการ

TL;DR

  • การหลับเมื่อปิดฝาเป็นค่าเริ่มต้นและถูกต้องสำหรับการพิมพ์บนเครื่องบิน
  • ผิดสำหรับ job LLM ยาว การ render ข้ามคืน หรืออะไรก็ตามที่ต้องทำงานต่อขณะคุณไม่อยู่ที่แป้นพิมพ์
  • คำตอบที่ Apple รองรับคือจอภายนอก + ไฟ + input
  • คำตอบ CLI คือ caffeinate -dimsu พร้อมข้อแม้ว่าต้องจำหยุด
  • คำตอบของ Timex คือ toggle แถบเมนูสำหรับโหมด Stay Awake พร้อม max duration แข็งเพื่อมันไม่รันตลอดไป
  • เสียบสำหรับอะไรที่เกินหนึ่งชั่วโมง ดูความร้อน ขอต้อนรับสู่โลกของ MacBook ที่ทำงานที่เริ่มไปจนเสร็จ

ถ้าคุณรันโมเดลในเครื่องบน MacBook ลอง toggle ปิดฝา มันเป็นส่วนของ tier ฟรี — ไม่มีขีดจำกัดทดลอง ไม่ต้องใช้ license ขีด 100 ชม. ใช้กับด้านติดตามเวลาเท่านั้น ซื้อ Timex $49 เมื่อต้องการการติดตามไม่จำกัดด้วย